Cod sursa(job #1359878)
| Utilizator | Data | 25 februarie 2015 09:17:50 | |
|---|---|---|---|
| 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[257];
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;
}
