Cod sursa(job #1170096)

Utilizator mihai995mihai995 mihai995 Data 12 aprilie 2014 17:57:24
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <cstdlib>
using namespace std;

const int N = 1 + 5e5;

int v[N];

void qsort(int st, int dr){
    if (dr <= st)
        return;

    swap( v[dr], v[st + rand() % (dr - st + 1)] );
    int poz = st;
    for (int i = st ; i < dr ; i++)
        if ( v[i] < v[dr] || (v[i] == v[dr] && (rand() & 1) ) ){
            swap(v[i], v[poz]);
            poz++;
        }
    swap(v[poz], v[dr]);

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

int main(){
    ifstream in("algsort.in");
    for (int i = 0 ; i <= v[0] ; i++)
        in >> v[i];
    in.close();

    qsort(1, v[0]);

    ofstream out("algsort.out");
    for (int i = 1 ; i <= v[0] ; i++)
        out << v[i] << ' ';
    out << '\n';
    out.close();

    return 0;
}