Cod sursa(job #1146110)

Utilizator cristitamasTamas Cristian cristitamas Data 18 martie 2014 18:34:39
Problema Radix Sort Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <cstdio>
#include <vector>
#define Nmax 10000010
using namespace std;

int N,A,B,C;
int V[Nmax];

void Formare()
{
    V[1]=B;
    for(int i=2;i<=N;++i)
            V[i]=(1LL*A*V[i-1]+B)%C;
}

void Creare(int Nr)
{
    vector <int> Lista[260];
    for(int i=1;i<=N;++i)
        Lista[255 & V[i]>>Nr].push_back(V[i]);
    int c=1;
    for(int i=0;i<=255;++i)
    {
        for(int j=0;j<Lista[i].size();++j)
                V[c++]=Lista[i][j];
        Lista[i].clear();
    }
}

void Afisare()
{
    for(int i=1;i<=N;i+=10)
            printf("%d ",V[i]);
}


int main()
{
    freopen("radixsort.in","r",stdin);
    freopen("radixsort.out","w",stdout);
    scanf("%d %d %d %d",&N,&A,&B,&C);
    Formare();
    for(int i=0,Nr=0;i<4;++i,Nr+=8)
        Creare(Nr);
    Afisare();
    return 0;
}