Cod sursa(job #1362197)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 26 februarie 2015 10:57:59
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include<cstdio>
#include<string>

using namespace std;

#ifdef HOME
const string inputFile = "input.txt";
const string outputFile = "output.txt";
#else
const string problemName = "algsort";
const string inputFile = problemName + ".in";
const string outputFile = problemName + ".out";
#endif

const int NMAX = 500000 + 5;

int N;
int V[NMAX];

void quicksort(int lo, int hi) {
    if(lo >= hi)
        return;

    int p = V[(lo + hi) / 2], i = lo, j = hi;

    while(i <= j) {
        while(V[i] < p)
            i++;

        while(V[j] > p)
            j--;

        if(i <= j)
            swap(V[i++], V[j--]);
    }

    quicksort(lo, j);
    quicksort(i, hi);
}

int main() {
    int i;

    freopen(inputFile.c_str(), "r", stdin);
    freopen(outputFile.c_str(), "w", stdout);

    scanf("%d", &N);

    for(i = 1; i <= N; i++)
        scanf("%d", &V[i]);

    quicksort(1, N);

    for(i = 1; i <= N; i++)
        printf("%d ", V[i]);

    return 0;
}