Pagini recente » Cod sursa (job #660890) | Cod sursa (job #1206852) | Cod sursa (job #122653) | Cod sursa (job #767068) | Cod sursa (job #1681842)
#include <fstream>
#include <algorithm>
#define h 100000
using namespace std;
int n,i,b[10000001],c[100001],k,x,y,z,a[10000001],t;
int main()
{
ifstream fin ("radixsort.in");
ofstream fout ("radixsort.out");
fin>>n>>x>>y>>z;
a[1]=y;
for (i=1;i<=n;i++)
{
a[i]=(x*a[i-1]+y)%z;
//if (i%10==1) a[++t]=v[i];
}
for (i=1;i<=n;i++) c[a[i]%h]++; //bucket 1 - ultimele 5 cifre
for (i=1;i<h;i++) c[i]+=c[i-1];
for (i=n;i>=1;i--)
{
b[c[a[i]%h]]=a[i];
c[a[i]%h]--;
}
for (i=1;i<=n;i++) c[b[i]/h]++; //bucket 2 - primele 5 cifre
for (i=1;i<h;i++) c[i]+=c[i-1];
for (i=n;i>=1;i--)
{
a[c[b[i]/h]]=b[i];
c[a[i]/h]--;
}
for (i=1;i<=n;i++)
if (i%10==1) fout<<a[i]<<" ";
return 0;
}