Cod sursa(job #1502285)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 14 octombrie 2015 15:35:34
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#define N 10000005

using namespace std;
int n,a,b,c,k,nx[N],u[70],p[70],i,j,v[N],vv[N],nr,NR;
int main()
{
     ifstream f("radixsort.in");
     ofstream g("radixsort.out");

     f>>n>>a>>b>>c;

     v[0]=b;
     for(i=1;i<n;++i) v[i]=(v[i-1]*a+b)%c;

     for(NR=0;NR<6;++NR)
     {
          for(i=0;i<(1<<6);++i) p[i]=u[i]=-1;

          for(i=0;i<n;++i)
          {
              k=(v[i]>>(6*NR))%(1<<6);
              if(p[k]==-1) p[k]=i, u[k]=i;
              else nx[u[k]]=i, u[k]=i;
          }
          nr=-1;
          for(i=0;i<(1<<6);++i)
          if(u[i]!=-1)
          {
              for(j=p[i];u[i]!=j;j=nx[j])
              vv[++nr]=v[j];
              vv[++nr]=v[u[i]];
          }
          for(i=0;i<n;++i) v[i]=vv[i];
     }
     for(i=0;i<n;i+=10) g<<v[i]<<'\n';
    return 0;
}