Cod sursa(job #2301942)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 13 decembrie 2018 17:53:04
Problema Radix Sort Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include<cstring>
#include<fstream>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
#define R 0xFF
int n,v[10000001],a,b,c,i,*t,r;
void C(int a[],int b[],int y)
{
    int d[256],e[256],i;
    memset(d,0,sizeof(d));
    for(i=0;i<n;i++)
        d[(a[i]>>(y*8))&R]++;
    for(e[0]=0,i=1;i<256;i++)
        e[i]=e[i-1]+d[i-1];
    for(i=0;i<n;i++)
        b[e[(a[i]>>(y*8))&R]++]=a[i];
}
int main()
{
    f>>n>>a>>b>>c;
    v[0]=b%c;
    for(i=1;i<n;i++)
        v[i]=(1LL*a*v[i-1]%c+b)%c;
    t=new int[n];
    r=sizeof(v[0]);
    for(i=0;i<r;i++)
        if(i%2==0)
            C(v,t,i);
        else
            C(t,v,i);
    for(i=0;i<n;i+=10)
        g<<v[i]<<' ';
}