Pagini recente » Cod sursa (job #2812456) | Cod sursa (job #505445) | Cod sursa (job #2368825) | Cod sursa (job #1908446) | Cod sursa (job #2082207)
//Enunt: http://www.infoarena.ro/problema/algsort
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int v[500001];
void Inter(int &x,int &y)
{
int aux=y;
y=x;
x=aux;
}
void Divide(int st,int dr,int &m)
{
int i,j,pi,pj;
i=st;
j=dr;
pi=0;
pj=1;
while(i<j)
{
if(v[i]>v[j])
{
Inter(v[i],v[j]);
Inter(pi,pj);
}
i+=pi;
j-=pj;
}
m=i;
}
void QuickSort(int st,int dr)
{
int m;
if(st<dr)
{
Divide(st,dr,m);
QuickSort(st,m-1);
QuickSort(m+1,dr);
}
}
int main()
{
int N;
in>>N;
for(int i=1;i<=N;++i)
in>>v[i];
QuickSort(1,N);
for(int i=1;i<=N;++i)
out<<v[i]<<' ';
return 0;
}