Pagini recente » Cod sursa (job #1702540) | Cod sursa (job #2754972) | Cod sursa (job #1232240) | Cod sursa (job #2396836) | Cod sursa (job #1438728)
#include <fstream>
#include <cstring>
#define DN 10000005
#define PW 20
#define MSK ((1<<PW)-1)
using namespace std;
int n,a,b,c,v[DN],vx[DN],cnt[MSK+2];
int main() {
ifstream f("radixsort.in");
ofstream g("radixsort.out");
f>>n>>a>>b>>c;
v[0]=b;
for(int i=1; i<n; ++i) v[i]=(v[i-1]*1LL*a+b)%c;
for(int sh=0; sh<=31; sh+=PW) {
for(int i=0; i<n; ++i) {
int cc=(v[i]>>sh)&MSK;
++cnt[cc+1];
}
for(int i=1; i<=MSK; ++i) cnt[i]+=cnt[i-1];
for(int i=0; i<n; ++i) {
int cc=(v[i]>>sh)&MSK;
vx[cnt[cc]]=v[i];
++cnt[cc];
}
memcpy(v,vx,sizeof(vx));
memset(cnt,0,sizeof(cnt));
}
for(int i=0; i<n; i+=10) g<<v[i]<<' ';
}