Cod sursa(job #1619163)

Utilizator andrey2397Barbu Andrei Octavian andrey2397 Data 28 februarie 2016 13:22:05
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int NMAX=500001;

long long i, n, a[NMAX];

int pivot(int s, int d)
{
    int di=0;
    while(s<d){
        if(a[s]>a[d]){
            swap(a[s],a[d]);
            di=1-di;
        }
        s+=di;
        d-=1-di;
    }
    return s;
}

void qs(int s, int d)
{
    int k;
    if(s<d){
        k=pivot(s, d);
        qs(s ,k-1);
        qs(k+1, d);
    }
}

void afis()
{
    for(i=1;i<=n;i++) fout<<a[i]<<" ";
    fout<<endl;
}
int main()
{
    fin>>n;
    for(i=1;i<=n;i++) fin>>a[i];
    qs(1, n);
    afis();
    return 0;
}