Cod sursa(job #1359882)

Utilizator Darius15Darius Pop Darius15 Data 25 februarie 2015 09:20:10
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>
#include <list>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int n,a[10000001],p,i,l,b,c,lim=1<<30,base=256;
list <int> v[300];
int main()
{
    f>>n>>b>>a[1]>>c;
    for (i=2;i<=n;i++)
        a[i]=(b*a[i-1]+a[1])%c;
    for (p=1;p<=lim/base;p*=base){
        for (i=1;i<=n;i++){
            v[(a[i]/p)%base].push_back(a[i]);
        }
        l=0;
        for (i=0;i<=base;i++)
            if (v[i].size()>0)
            while(v[i].size()>0)
                a[++l]=v[i].front(),v[i].pop_front();
    }
    for (i=1;i<=n;i+=10)
        g<<a[i]<<' ';
    return 0;
}