Pagini recente » Cod sursa (job #1678641) | Cod sursa (job #1990004) | Cod sursa (job #1189576) | Cod sursa (job #993149) | Cod sursa (job #2356314)
#include <fstream>
#include <vector>
using namespace std;
ifstream f ("radixsort.in");
ofstream g ("radixsort.out");
int n, a, b, c, Max;
long long p;
int v[10 000 005];
vector <int> H[10005];
int main()
{
f >> n >> a >> b >> c;
v[1] = b;
Max = v[1];
for (int i = 2; i <= n; ++i)
{
v[i] = (a * v[i-1] + b) % c;
Max = max(Max, v[i]);
}
p = 1;
while (p < Max)
{
long long ms = 0;
for (int i = 1; i <= n; ++i)
{
H[v[i] / p % 10000].push_back(v[i]);
ms = max(ms, v[i] / p % 10000);
}
int vf = 0;
for (int i = 0; i <= ms; ++i)
{
while (!H[i].empty())
{
v[++vf] = H[i].back();
H[i].pop_back();
}
}
p = p * 10000;
}
for (int i = 1; i <= n; i += 10)
g << v[i] << " ";
return 0;
}