Cod sursa(job #1785541)

Utilizator BLz0rDospra Cristian BLz0r Data 21 octombrie 2016 15:32:35
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
/* Sortare folosita: QSort */
//#include <fstream>
#include <cstdio>
#include <algorithm>
using namespace std;

#define Nmax 500002
/*
ifstream fin("algsort.in");
ofstream fout("algsort.out");
*/

FILE *f = fopen("algsort.in", "r");
FILE *g = fopen("algsort.out", "w");

int v[Nmax];

int Partitionare(int st, int dr) {

    int pivot = v[dr];

    int i = st;
    for (int j = st; j < dr; ++j) {

        if (v[j] <= pivot) {
            swap(v[i], v[j]);
            i++;
        }
    }
    swap(v[i], v[dr]);

    return i;
}

void QSort(int st, int dr) {

    if (st >= dr)
        return;

    int poz = Partitionare(st, dr);

    QSort(st, poz - 1);
    QSort(poz + 1, dr);
};

int main() {

    int N;

    fscanf(f, "%d", &N);//fin >> N;
    for (int i = 1; i <= N; ++i)
       fscanf(f, "%d", &v[i]); //fin >> v[i];

    random_shuffle(v + 1, v + N + 1);

    QSort(1, N);

    for (int i = 1; i <= N; ++i)
        fprintf(g, "%d ", v[i]);//fout << v[i] << " ";

    return 0;
}