Cod sursa(job #503437)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 22 noiembrie 2010 21:58:06
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<stdio.h>
#define NR 500000
long v[NR],n;
void merge(long v[NR],long p,long m,long q)
{long i=p,y[NR],ny=p,j=m+1,k;
while(i<=m&&j<=q)
      {if(v[i]<=v[j])
               y[ny++]=v[i++];
      else
               y[ny++]=v[j++];}
while(i<=m)
      y[ny++]=v[i++];
while(j<=q)
      y[ny++]=v[j++];
for(k=p;k<=q;k++)
      v[k]=y[k];}

void mergeSort(long v[NR],long p,long q)
{long m=(p+q)/2;
if(p<q)
     {mergeSort(v,p,m);
     mergeSort(v,m+1,q);
     merge(v,p,m,q);}}

void tipar(long v[NR],long n)
{int i;
for(i=0;i<n;i++)
      printf("%ld ",v[i]);
printf("\n");}

int main()
{long i;
freopen("algsort.in","rt",stdin);
freopen("algsort.out","wt",stdout);
scanf("%ld",&n);
for(i=0;i<n;i++)
       scanf("%ld",&v[i]);
mergeSort(v,0,n-1);
tipar(v,n);
fclose(stdin);
fclose(stdout);
return 0;}