Cod sursa(job #1801553)

Utilizator OlivianOlivian Dan Cretu Olivian Data 9 noiembrie 2016 10:27:35
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<cstdio>
#include<algorithm>
#include<ctime>
using namespace std;
int v[500007],n;
int Random(int a,int b)
{
    return a+(1LL*rand()*rand())%(b-a+1);
}
void qsort(int st,int dr)
{
    if(st >= dr) return;
    int a=v[Random(st,dr)],i=st,j=dr;
    while(i<j)
    {
        while(i<= dr && v[i]<a) i++;
        while(j>=st && v[j]>a) j--;
        if(i <= j)
        {
            swap(v[i], v[j]);
            i++;
            j--;
        }
    }
    qsort(st,j);
    qsort(i,dr);
}
int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    srand(time(0));
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&v[i]);
    qsort(1,n);
    for(int i=1;i<=n;i++) printf("%d ",v[i]);
    return 0;
}