Pagini recente » Cod sursa (job #546209) | Cod sursa (job #2788623) | Cod sursa (job #640286) | Cod sursa (job #1439194) | Cod sursa (job #2651822)
#include <bits/stdc++.h>
using namespace std;
ifstream in("radixsort.in");
ofstream out("radixsort.out");
int v[10000001];
int aux[10000001];
int cnt[260],indexx[260];
int radixsort(int v[],int aux[],int n,int current)
{
memset(cnt,0,sizeof(cnt));
for(int i=0;i<n;i++)
{
int cifra=((v[i]>>current) & 255);
++cnt[cifra];
}
indexx[0]=0;
for(int i=1;i<256;i++)
indexx[i]=cnt[i-1]+indexx[i-1];
for(int i=0;i<n;i++)
{
int cifra=((v[i]>>current) & 255);
aux[indexx[cifra]++]=v[i];
}
}
int main()
{
long long n,a,b,c,biti=sizeof(v[0]);
in>>n>>a>>b>>c;
v[0]=b;
for(int i=1;i<n;i++)
v[i]=(a*v[i-1]%c+b)%c;
for(int i=0;i<biti;i++)
{
if(i%2) radixsort(aux,v,n,i*8);
else radixsort(v,aux,n,i*8);
}
for(int i=0;i<n;i+=10)
out<<v[i]<<" ";
out<<"\n";
return 0;
}