Cod sursa(job #1101593)

Utilizator Kira96Denis Mita Kira96 Data 8 februarie 2014 18:51:31
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<queue>
#define base 256
#define ba 255
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
queue<int> q[2][base];
int n,a,b,c,fir,p,j,i,val;
int main ()
{
    f>>n>>a>>b>>c;
    fir=b;
    q[p][fir&ba].push(fir);
    for(i=2;i<=n;++i)
    {
        fir=1LL*(fir*a+b)%c;
        q[p][fir&ba].push(fir);
    }
    for(i=1;i<4;++i,p=1-p)
    for(j=0;j<base;++j)
    for(;!q[p][j].empty();q[p][j].pop())
    {
        val=q[p][j].front()>>(8*i);
        q[1-p][val&ba].push(q[p][j].front());
    }
    for(i=1,j=0;j<base;++j)
    for(;!q[p][j].empty();q[p][j].pop(),i++)
    if(i%10==1)
    g<<q[p][j].front()<<" ";
    return 0;
}