Pagini recente » Cod sursa (job #867643) | Cod sursa (job #2947196) | Cod sursa (job #396316) | Cod sursa (job #1996360) | Cod sursa (job #2311074)
#include <bits/stdc++.h>
#define LIM 1<<17
/// TONI BO$$ was here
/// #MLC
using namespace std;
char BUF[LIM];
int poz;
char getCh()
{
poz++;
if(poz>=LIM)
{
fread(BUF,LIM,1,stdin);
poz=0;
}
return BUF[poz];
}
int getNr()
{
int nr=0,semn=1;
char c=getCh();
while(!isdigit(c) && c!='-')
c=getCh();
if(c=='-')
{
c=getCh();
semn=-1;
}
while(isdigit(c))
{
nr=nr*10+c-'0';
c=getCh();
}
return nr*semn;
}
int v[500001];
void mergesort(int p,int u)
{
if(p>=u)
return ;
int mid=(p+u)/2;
mergesort(p,mid);
mergesort(mid+1,u);
int i,j,ct;
vector <int> aux(u-p+1);
i=p;
j=mid+1;
ct=0;
while(i<=mid && j<=u)
{
if(v[i]<=v[j])
aux[ct++]=v[i++];
else
aux[ct++]=v[j++];
}
while(i<=mid)
aux[ct++]=v[i++];
while(j<=u)
aux[ct++]=v[j++];
for(i=p; i<=u; i++)
v[i]=aux[i-p];
}
int main()
{
int i,n;
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
n=getNr();
for(i=1; i<=n; i++)
v[i]=getNr();
mergesort(1,n);
for(i=1; i<=n; i++)
printf("%d ",v[i]);
return 0;
}