Cod sursa(job #283337)

Utilizator pedobearBacauanu Vlad pedobear Data 19 martie 2009 00:35:32
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>

int v[500001],a[500001];
int i,n;

void merge (int x, int y)
{
     int m,i,k,j;
     if (x>=y) return;
     m=(x+y)/2;
     merge (x,m);
     merge (m+1,y);
     
     i=x;
     j=m+1;
     k=x-1;
     while (i<=m && j<=y){
           if (v[i]<=v[j]) a[++k]=v[i++];
           else a[++k]=v[j++];
           }
     if (i>m) while (j<=y) a[++k]=v[j++];
     else while (i<=m) a[++k]=v[i++];
     for (i=x;i<=y;i++) v[i]=a[i];
}

int main ()
{
    freopen ("algsort.in","r",stdin);
    freopen ("algsort.out","w",stdout);
    
    scanf ("%d",&n);
    for (i=1;i<=n;i++) scanf ("%d",&v[i]);
    
    merge (1,n);
    
    for (i=1;i<=n;i++) printf ("%d ",v[i]);
    
    return 0;
}