Cod sursa(job #1726405)

Utilizator lupvasileLup Vasile lupvasile Data 7 iulie 2016 22:10:35
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

#define nmax 500010
#define cout fout
int n;
int v[nmax],aux[nmax];

void qsort(int a,int b)
{

    int mid=(a+b)/2;

    if(a==b) return;

    qsort(a,mid);
    qsort(mid+1,b);

    int i(a),j(mid+1),x=a-1;

    while(i<=mid and j<=b)
    {
        if(v[i]<=v[j])
        {
            aux[++x]=v[i];
            ++i;
        }
        else
        {
            aux[++x]=v[j];
            ++j;
        }
    }

    for(;i<=mid;++i) aux[++x]=v[i];
    for(;j<=b;++j) aux[++x]=v[j];

    for(i=a;i<=b;++i) v[i]=aux[i];
}

int main()
{
    int i;

    fin>>n;
    for(i=1;i<=n;++i)
        fin>>v[i];

    qsort(1,n);

    for(i=1;i<=n;++i) cout<<v[i]<<' ';
    return 0;
}