Cod sursa(job #429896)

Utilizator MKLOLDragos Ristache MKLOL Data 30 martie 2010 16:29:57
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#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]);

}