Cod sursa(job #1316532)

Utilizator RaduGabriel2012Dinu Radu RaduGabriel2012 Data 13 ianuarie 2015 21:38:36
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
 int n,v[10000005],b[10000005];

void Count(int v[],int del,int dim)
{ int i,c[1<<dim],mask=(1<<dim)-1;
    memset(c,0,sizeof(c));
    for(i=1;i<=n;i++)
     c[(v[i]>>del)&mask]++;

    for(i=1;i<(1<<dim);i++)
     c[i]+=c[i-1];

    for(i=n;i>=1;i--)
    {
       b[c[(v[i]>>del)&mask]]=v[i];
       c[(v[i]>>del)&mask]--;
    }

 for(i=1;i<=n;i++)
  v[i]=b[i];
}

int main()
{ int i,x1,x2,x3;
   f>>n>>x1>>x2>>x3;
    v[1]=x2;

   for(i=2;i<=n;i++)
    v[i]=(x1*v[i-1]+x2)%x3;


   for(i=0;i<=24;i+=8)
     Count(v,i,8);

   for(i=1;i<=n;i+=10)
    g<<v[i]<<" ";
    return 0;
}