Cod sursa(job #1815790)

Utilizator maryan_lupMarian Lupascu maryan_lup Data 25 noiembrie 2016 19:33:33
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <bits/stdc++.h>
#include <time.h>
#define DIMMAX 500005

using namespace std;

long vect[DIMMAX];
long N;

vector <long> p;

void QUICKSORT(long inf, long sup)
{
    long x, i, j, t;
    i = inf;
    j = sup;
    p.push_back(rand()%(sup-inf)+inf);
    p.push_back(rand()%(sup-inf)+inf);
    p.push_back(rand()%(sup-inf)+inf);
    sort(p.begin(),p.begin()+3);
    long pivot=p[1];
    x=vect[pivot];
    do
    {
        while ( (i < sup) && (vect[i] < x) ) i++;
        while ( (j > inf) && (vect[j] > x) ) j--;
        if ( i<= j )
        {
            t = vect[i];
            vect[i] = vect[j];
            vect[j] = t;
            i++;
            j--;
        }
    } while ( i <= j );
    if ( inf < j ) QUICKSORT(inf, j);
    if ( i < sup ) QUICKSORT(i, sup);
}

void citire()
{
    ifstream f("algsort.in");
    f>>N;
    for(long i=0; i<N; i++)
        f>>vect[i];
    f.close();
}

void afisare()
{
    ofstream g("algsort.out");
    for(long i=0; i<N; i++)
        g<<vect[i]<<" ";
    g.close();
}

int main()
{
    citire();

    QUICKSORT(0,N-1);

    afisare();

    return 0;
}