Pagini recente » Cod sursa (job #1602181) | Cod sursa (job #1113948) | Cod sursa (job #770360) | Cod sursa (job #1378659) | Cod sursa (job #1564828)
#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;
}