Cod sursa(job #371374)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 5 decembrie 2009 02:04:06
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>
#define M 65537
#define N 500001
int sir[N],count[M],sir2[N];
int main ()
{freopen("algsort.in","r",stdin);
 int i,n,m,j,h,t,k;
 m=65536;
 scanf("%d",&n);
 for (i=0;i<n;i++)
 {scanf("%d",&sir[i]);
 }
 for (k=0;k<2;k++)
 {for (j=0;j<m;j++)count[j]=0;
  for (i=0;i<n;i++)count[(sir[i]/(1<<(16*k)))%m]++;
  for (i=1;i<m;i++)count[i]+=count[i-1];
  
  for (i=n-1;i>=0;i--)
  {sir2[(count[(sir[i]/(1<<(16*k)))%m]--)-1]=sir[i];
  }
  for (i=0;i<n;i++)
  {sir[i]=sir2[i];
  }
 }
 
 freopen("algsort.out","w",stdout);
 for (i=0;i<n;i++)
 {printf("%d ",sir[i]);
 }
 return 0;
}