Cod sursa(job #1458442)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 7 iulie 2015 15:44:32
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream f("radix.in");
ofstream g("radix.out");
int N,A,B,C;
int V[10000005];

int mask=255;
void Read()
{
    f>>N>>A>>B>>C;
    V[1]=B;
    for(int i=2;i<=N;i++)
        V[i]=(V[i-1]*A+B)%C;
}

void Solve(int Shift)
{
    vector <int> X[257];
    for(int i=1;i<=N;i++)
        X[(V[i]<<Shift) & mask].push_back(V[i]);
    int poz=0;
    for(int i=0;i<=mask;i++)
        for(int j=0;j<X[i].size();j++)
            V[++poz]=X[i][j];
}
int main()
{
    Read();
    for(int i=0;i<=3;i++)
        Solve(i*8);
    for(int i=1;i<=N;i+=10)
        g<<V[i]<<" ";
    g<<"\n";
    return 0;
}