Cod sursa(job #1564828)

Utilizator ndani17Daniel Nohai ndani17 Data 9 ianuarie 2016 23:12:28
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
using namespace std;
 
int N,a[10100100],x[10100100],contor[260],index[260],bitmax=256;
 
void citire()
{
 
    ifstream in("radixsort.in");
    int i,a,b,c;
    in>>N>>a>>b>>c;
    a[1]=b;
    for(i=2;i<=N;i++)
        a[i]=(1LL*a[i-1]*a+b)%c;
    in.close();
 
}
 
void solve() 
{
 
    int i,step;
    for(step=0;step<=24;step+=8) 
      {
 
        for(i=0;i<bitmax;i++)
            contor[i]=0;
 
        for(i=1;i<=N;i++) 
        {
            x[i]=a[i];
            contor[ (x[i]>>step) & (bitmax-1)]++;
        }
 
        index[0]=1;
        for(i=1;i<bitmax;i++)
            index[i]=index[i-1]+contor[i-1];
 
        for(i=1;i<=N;i++)
            a[ index[(x[i]>>step)&(bitmax-1)]++ ]=x[i];
    }
}
 
void afis() 
{
    ofstream out("radixsort.out");
    int i;
    for(i=1;i<=N;i+=10)
        out<<a[i]<<' ';
    out<<'\n';
    out.close();
 
}
 
int main () 
{
    citire();
    solve();
    afis();
    return 0; 
}