Mai intai trebuie sa te autentifici.
Cod sursa(job #1955439)
Utilizator | Data | 5 aprilie 2017 23:15:39 | |
---|---|---|---|
Problema | Radix Sort | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.85 kb |
#include <fstream>
#define BAZA 256
using namespace std;
ifstream fin ("radixsort.in");
ofstream fout ("radixsort.out");
int n,a,b,c,i,p;
int f[BAZA],w[10000001],k,nr,l;
int v[10000001];
int main ()
{
fin >> n >> a >> b >> c;
v[1] = b;
for (i=2; i<=n; i++)
v[i] = ((long long)v[i-1]*a+b)%c;
nr = 1;
for (l=0; l<=3; l++)
{
for (i=0; i<=BAZA-1; i++)
f[i] = 0;
for (i=1; i<=n; i++)
f[(v[i]>>k)%BAZA]++;
for (i=1; i<=BAZA-1; i++)
f[i] += f[i-1];
for (i=n; i>=1; i--)
{
w[f[(v[i]>>k)%BAZA]] = v[i];
f[(v[i]>>k)%BAZA]--;
}
for (i=1; i<=n; i++)
v[i] = w[i];
nr *= BAZA;
k += 8;
}
for (i=1; i<=n; i+=10)
fout << v[i] << " ";
return 0;
}