Pagini recente » Cod sursa (job #302329) | Cod sursa (job #63300) | Cod sursa (job #380637) | Cod sursa (job #414628) | Cod sursa (job #2586028)
#include <bits/stdc++.h>
#define ULL unsigned long long
#define UI unsigned int
using namespace std;
ifstream in("radixsort.in");
ofstream out("radixsort.out");
UI n;
UI sir[10000001],maxim;
ULL P,Val,Add,Mod;
UI vf[10000001],urm[10000001],last[1000000],apar[1000000],nr;
void adauga(int cif,int val)
{
vf[++nr]=val;
urm[nr]=last[cif];
last[cif]=nr;
apar[cif]++;
}
int main()
{
in>>n>>P>>Add>>Mod;
sir[1]=Add;
for(UI i=2;i<=n;i++)
{
Val=sir[i-1];
sir[i]=(P*Val+Add)%Mod;
maxim=max(maxim,sir[i]);
}
for(UI exp=1;maxim/exp;exp*=1000000)
{
for(UI j=0;j<=999999;j++)
last[j]=apar[j]=0;
nr=0;
for(UI j=1;j<=n;j++)
adauga( sir[j]/exp%1000000 , sir[j] );
UI poz=0;
for(UI cif=0;cif<=999999;cif++)
{
for(UI k=last[cif],l=0;k;k=urm[k],l++)
sir[poz+apar[cif]-l]=vf[k];
poz+=apar[cif];
}
}
for(UI i=1;i<=n;i+=10)
out<<sir[i]<<' ';
return 0;
}