Cod sursa(job #1117079)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 23 februarie 2014 00:36:50
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<cstdio>
int n,a,b,c,v[500100],x[500100],fr[1000],i,j,q=255,w[4]={0,8,16,24};
FILE *f,*g;
int main(){
    f=fopen("algsort.in","r");
    g=fopen("algsort.out","w");
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++){
        fscanf(f,"%d",&v[i]);
    }
    for(i=0;i<=3;i++){
        for(j=0;j<=255;j++){
            fr[j]=0;
        }
        for(j=1;j<=n;j++){
            fr[(v[j]>>w[i])&q]++;
        }
        for(j=0;j<=255;j++){
            fr[j]+=fr[j-1];
        }
        for(j=n;j>=1;j--){
            x[fr[(v[j]>>w[i])&q]]=v[j];
            fr[(v[j]>>w[i])&q]--;
        }
        for(j=1;j<=n;j++){
            v[j]=x[j];
        }
    }
    for(i=1;i<=n;i++){
        fprintf(g,"%d ",x[i]);
    }






    fclose(f);
    fclose(g);
    return 0;
}