Pagini recente » Cod sursa (job #1595237) | Cod sursa (job #1956580) | Cod sursa (job #1348119) | Cod sursa (job #3130723) | Cod sursa (job #1545626)
#include<fstream>
#include<string.h>
using namespace std;
unsigned n,v[10000000];
void countsort(int b,unsigned d[],unsigned s[])
{
int c[256];
memset(c,0,256*4);
for (int i=0;i<n;i++)
c[(s[i]>>(b*8))&255]++;
for (int i=1;i<256;i++)
c[i]+=c[i-1];
for (int i=n-1;i>=0;i--)
d[--c[(s[i]>>(b*8))&255]]=s[i];
}
void radixsort()
{
unsigned *a=new unsigned[n];
for (int i=0;i<4;i++)
if (i%2)
countsort(i,v,a);
else
countsort(i,a,v);
}
int main()
{
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int a,b,c;
f>>n>>a>>b>>c;
v[0]=b;
for(int i=1;i<n;i++)
v[i]=((unsigned long long)(a*v[i-1])%c+b)%c;
radixsort();
for (int i=0;i<n;i+=10)
g<<v[i]<<" ";
return 0;
}