Pagini recente » Cod sursa (job #1568230) | Cod sursa (job #2629348) | Cod sursa (job #1843369) | Cod sursa (job #2148937) | Cod sursa (job #429896)
Cod sursa(job #429896)
#include<stdio.h>
int N,v[200000],aux[200000],rez;
int merge(int st,int dr)
{
int m=(st+dr)/2;
if(st>=dr)
return 0;
else
{
merge(st,m);
merge(m+1,dr);
}
for(int i=st,j=m+1,k=st;i<=m||j<=dr;)
{
if(j>dr||(i<=m&&v[i]<v[j]))
{
aux[k++]=v[i++];
}
else
{
if(i<=m)
rez+=m-i+1;
aux[k++]=v[j++];
}
}
for(int i=st;i<=dr;++i)
v[i]=aux[i];
return 0;
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&N);
for(int i=1;i<=N;++i)
scanf("%d",&v[i]);
merge(1,N);
for(int i=1;i<=N;++i)
printf("%d ",v[i]);
}