Cod sursa(job #1932408)

Utilizator AndreiMaximIonutMaxim Andrei AndreiMaximIonut Data 19 martie 2017 19:13:37
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>

using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int N;
long long v[500001];
int Qsort(int li,int ls)
{
    int st,dr,x;
    st=li;
    dr=ls;
    x=v[li];
    while(st<dr)
    {
        while(st<=dr && v[st]<=x) st++;
        while(v[dr]>x) dr--;
        if(st<dr)
            swap(v[st],v[dr]);

    }
    v[li]=v[dr];
    v[dr]=x;
    return dr;
}
void divide(int li, int ls)
{
    int m=Qsort(li,ls);
    if(m-1>li) divide(li,m-1);
    if(m+1<ls) divide(m+1,ls);
}
int main()
{
    int i;
    fin>>N;
    for(i=1; i<=N; ++i) fin>>v[i];
    divide(1,N);
    for(i=1; i<=N; ++i)
        fout<<v[i]<<' ';
    return 0;
}