Cod sursa(job #2201447)

Utilizator daniel.vbVasile Daniel daniel.vb Data 4 mai 2018 19:14:33
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <stdio.h>




int n,m,a,b,c;
int v[1000005],x[65600],aux[1000005];




int main()
{
    int i,j,c1;
    unsigned long long crt;
    FILE *f,*g;

    f=fopen("radixsort.in","r");
    g=fopen("radixsort.out","w");

    fscanf(f,"%d%d%d%d",&n,&a,&b,&c);

    v[1]=b;
    m=1;
    crt=b;
    for(i=2;i<=n;i++)
    {
        crt=(crt*a+b)%c;
        printf("%d ",crt);

        v[i]=(a*v[i-1]+b)%c;
    }


    c1=1<<16;


//    for(i=1;i<=n;i++)
  //      printf("%d ",v[i]);

    for(i=1;i<=n;i++)
         x[v[i]%c1]++;
    for(i=2;i<=c1;i++)
        x[i]+=x[i-1];
    for(i=1;i<=n;i++)
    {
        j=v[i]%c1;
        x[j-1]++;
        aux[x[j-1]]=v[i];
    }

    for(i=0;i<=c1;i++)
        x[i]=0;

    for(i=1;i<=n;i++)
         x[aux[i]/c1%c1]++;
    for(i=2;i<=c1;i++)
        x[i]+=x[i-1];
    for(i=1;i<=n;i++)
    {
        j=aux[i]/c1%c1;
        x[j-1]++;
        v[x[j-1]]=aux[i];
    }

    for(i=1;i<=n;i+=10)
        fprintf(g,"%d ",v[i]);

    fclose(f);
    fclose(g);
}