Pagini recente » Istoria paginii utilizator/petreionut69420 | Cod sursa (job #1815080) | Cod sursa (job #3191653) | Cod sursa (job #778749) | Cod sursa (job #2430720)
#include <bits/stdc++.h>
#define maxim 10000003
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int v[maxim];
int n,a,b,c;
int k;
int aux[260],poz[maxim];
int valby(int x)
{
return ((x>>(8*k))&255); //valoare byte
}
int main()
{
f>>n>>a>>b>>c;
v[0]=b;
for (int i=1;i<n;i++)
v[i]=(1LL*a*v[i-1]+b)%c;
for (k=0; k<= 3 ; k++)
{
memset(aux,0,sizeof(aux));
for (int i=0;i<n ;i++) aux[valby(v[i])]++;
for (int i=1;i<256; i++) aux[i]+=aux[i-1];
for (int i=n-1; i>= 0 ; i-- ) poz[--aux[valby(v[i])]]=v[i];
for (int i=0; i<n ;i++) v[i]=poz[i];
}
for (int i=0 ; i < n ; i+=10)
g<<v[i]<<" ";
}