Cod sursa(job #1979322)

Utilizator tqmiSzasz Tamas tqmi Data 10 mai 2017 11:05:49
Problema Radix Sort Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");

queue <unsigned int> Buck[260];

unsigned int A,B,C,N,V[10000005];

int main()
{
    fin>>N>>A>>B>>C;
    V[1]=B;
    for(int i=2;i<=N;++i)
    {
        V[i]=1LL*((1LL*A*V[i-1])%C+B%C)%C;
    }
    for(int i=1;i<=4;++i)
    {
        int shift=(i-1)*8;
        int dest=0;

        for(int j=1;j<=N;++j)
        {
            dest = (V[j]>>shift)&255;
            Buck[dest].push(V[j]);
        }
        int k=0,l=0;
        while(k<N)
        {
            while(Buck[l].empty())
                ++l;
            while(!Buck[l].empty())
            {
                V[++k]=Buck[l].front();
                Buck[l].pop();
            }
        }
    }
    for(int i=1;i<=N;i+=10)
        fout<<V[i]<<" ";
    fout<<"\n";
    return 0;
}