Pagini recente » Cod sursa (job #1142975) | Cod sursa (job #2471575) | Cod sursa (job #1140728) | Cod sursa (job #2401144) | Cod sursa (job #1128414)
#include <fstream>
using namespace std;
int N,v[10100100],aux[10100100],contor[260],index[260],bitmax=256;
void citire() {
ifstream in("radixsort.in");
int i,a,b,c;
in>>N>>a>>b>>c;
v[1]=b;
for(i=2;i<=N;i++)
v[i]=(1LL*v[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++) {
aux[i]=v[i];
contor[ (aux[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++)
v[ index[(aux[i]>>step)&(bitmax-1)]++ ]=aux[i];
}
}
void afisare() {
ofstream out("radixsort.out");
int i;
for(i=1;i<=N;i+=10)
out<<v[i]<<' ';
out<<'\n';
out.close();
}
int main () {
citire();
solve();
afisare();
return 0;
}