Pagini recente » Cod sursa (job #1965122) | Cod sursa (job #1623023) | Cod sursa (job #276398) | Cod sursa (job #2373622) | Cod sursa (job #2375332)
#include<bits/stdc++.h>
#define radix 0xFF
#define get_byte(x) ((x>>(byte*8))&radix)
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int n,A,B,C;
int a[10000002];
inline void count_sortare(int A[],int B[],int byte)
{
int val1[256];
int val2[256];
memset(val1,0,sizeof(val1));
memset(val2,0,sizeof(val2));
for(int i=1;i<=n;i++)
{
val1[get_byte(A[i])]++;
}
val2[0]=0;
for(int i=1;i<256;i++)
{
val2[i]=val2[i-1]+val1[i-1];
}
for(int i=1;i<=n;i++)
{
B[++val2[get_byte(A[i])]]=A[i];
}
}
inline void sortare()
{
int val[n+5];
memset(val,0,sizeof(val));
int m=sizeof(a[1]);
for(int i=0;i<m;i++)
{
if(i%2==0)
{
count_sortare(a,val,i);
}
else count_sortare(val,a,i);
}
}
int main()
{
f>>n>>A>>B>>C;
a[1]=B;
for(int i=2;i<=n;i++)
{
a[i]=(1LL*A*a[i-1]+B)%C;
}
sortare();
for(int i=1;i<=n;i+=10)
{
g<<a[i]<<' ';
}
return 0;
}