Pagini recente » Cod sursa (job #952518) | Cod sursa (job #1331951) | Cod sursa (job #467878) | Cod sursa (job #2570863) | Cod sursa (job #3140913)
#include <fstream>
using namespace std;
ifstream cin ("radixsort.in");
ofstream cout ("radixsort.out");
int lungime , sir[10000001] , copie[10000001] , aparitii[512];
int main ()
{
int factor , mod;
cin >> lungime >> factor >> sir[1] >> mod;
for (int indice = 2 ; indice <= lungime ; indice++)
sir[indice] = (1LL * factor * sir[indice - 1] + sir[1]) % mod;
for (int biti = 0 , masca = 511 ; biti < 32 ; biti += 8)
{
for (int indice = 1 ; indice <= lungime ; indice++)
aparitii[(sir[indice] >> biti) & masca]++;
int inceput[512]; inceput[0] = 1;
for (int indice = 1 ; indice <= masca ; indice++) {
inceput[indice] = inceput[indice - 1] + aparitii[indice - 1];
aparitii[indice - 1] = 0;
}
aparitii[masca] = 0;
for (int indice = 1 ; indice <= lungime ; indice++)
copie[inceput[(sir[indice] >> biti) & masca]++] = sir[indice];
swap(copie , sir);
}
for (int indice = 1 ; indice <= lungime ; indice += 10)
cout << sir[indice] << ' ';
cout.close(); cin.close();
return 0;
}