Pagini recente » Cod sursa (job #283107) | Cod sursa (job #426047) | Cod sursa (job #2252408) | Cod sursa (job #2438454) | Cod sursa (job #1128452)
#include <iostream>
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
#define MAX 10000100
int a[MAX], sir[MAX], fr[256];
int main()
{
int n, A, B, C, i, j;
fin>>n>>A>>B>>C;
a[1]=B;
for(i=2;i<=n;i++)
{
a[i]=(1LL*a[i-1]*A+1LL*B)%C;
}
for(j=0;j<4;j++)
{
for(i=1;i<=n;i++)
{
fr[(a[i]>>(j<<3))&255]++;
}
for(i=1;i<=255;i++)
{
fr[i]+=fr[i-1];
}
for(i=1;i<=n;i++)
{
sir[fr[(a[i]>>(j<<3))&255]--]=a[i];
}
memcpy(a, sir, sizeof(a));
memset(fr, 0, sizeof(fr));
}
reverse(a+1, a+n+1);
for(i=1;i<=n;i+=10)
{
fout<<a[i]<<" ";
}
}