Cod sursa(job #643753)

Utilizator matei_cChristescu Matei matei_c Data 4 decembrie 2011 13:20:18
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <cstdio>

const int MAX_N  = 500001 ;

int n;
int v[MAX_N],w[MAX_N];

void MERGE_SORT(int st, int dr)
{
    int m=(st+dr)/2;
    if(st==dr) return;
    MERGE_SORT(st,m);
    MERGE_SORT(m + 1,dr);
	int b=m+1;
	int c=st;
    for(int i=st;i<=m || b<=dr;)
        if( b>dr || (i<=m && v[i]<v[b]) )
		{	
            w[c] = v[i];
			++c;
			++i;
		}	
        else
		{	
            w[c] = v[b];
			++c;
			++b;
		}	
    for(int i=1;i<=dr;++i)
        v[i] = w[i];
}

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_SORT(1,n);
    for(int i=1;i<=n;++i)
        printf("%d ",v[i]);
	printf("\n");
    return 0;
}