Pagini recente » Cod sursa (job #1251386) | Cod sursa (job #1480305) | Cod sursa (job #2275439) | Cod sursa (job #2250187) | Cod sursa (job #2906675)
#include <iostream>
#include <cstdio>
#include <fstream>
using namespace std;
ifstream in("radixsort.in");
ofstream out("radixsort.out");
#define BASE 255
#define POW 8
#define NMax 10000010
int n,v[NMax],m[NMax],aux[BASE+1];
long long ii = 1;
int main()
{
int i,j,a,b,c;
in>>n>>a>>b>>c;
v[1] = b;
for(i = 2;i <= n; i++)
v[i]=(ii * a * v[i-1] + b)% c;
for(i = 0; i < 32; i+= POW)
{
for(j = 0; j <= BASE; j++)
aux[j] = 0;
for(j = 1; j <= n; j++)
++aux[(v[j]>>i)&BASE];
for(j = 1; j <= BASE; j++)
aux[j]+=aux[j-1];
for(j = n; j > 0; j--)
m[aux[(v[j]>>i)&BASE]--]=v[j];
for(j = 1; j <= n; j++)
v[j] = m[j];
}
for (int i = 1; i <= n; i += 10)
out<<v[i]<<" ";
out<<endl;
}