Pagini recente » Istoria paginii runda/agm-2018-testare/clasament | Cod sursa (job #2402400) | Cod sursa (job #1243685) | Rating Grigore Emil (Emilica) | Cod sursa (job #1528435)
#include <fstream>
#include <vector>
#define N 10000000
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int a,b,c,x,n,i,cnt[256];
int s[N],S[N],*v,*V,*aux;
int main()
{
f>>n>>a>>b>>c;
x=b;v=s;V=S;
for(i=1;i<=n;i++)
{
v[i]=x;
x=1LL*(a*x+b)%c;
}
for(int step=1;step<=4;step++)
{
//numar cate elemente contine fiecare buchet;
for(i=1;i<=n;i++)
cnt[v[i]&255]++;
//determin la ce indice se termina fiecare buchet
for(i=1;i<=255;i++)cnt[i]+=cnt[i-1];
//asez elemetele in buchete
for(i=n;i>=1;i--)
{
a=v[i]&255;
b=v[i]>>8;
V[cnt[a]]=b|(a<<24);
cnt[a]--;
}
//cutarare cnt (analog cu
for(i=0;i<=255;i++)cnt[i]=0;
//schimb pointare pe vectorul nou
aux=V;V=v;v=aux;
}
for(i=1;i<=n;i+=10)
g<<v[i]<<' ';
return 0;
}