Pagini recente » Borderou de evaluare (job #2513313) | Borderou de evaluare (job #720858) | Cod sursa (job #2125500)
#include<fstream>
#include<deque>
using namespace std;
int main() {
ifstream in("radixsort.in");
int N,A,B,C;
in >> N >> A >> B >> C;
int *v = new int[N];
v[0] = B;
for (int i = 1;i < N;++i) {
v[i] = ((A * v[i - 1]) % C + B) % C;
;
}
int mx = v[0];
for (int i = 1; i < N; ++i)
if (v[i] > mx)
mx = v[i];
int tiz = 1;
for (; mx/tiz; tiz *= 10) {
int hany[10];
for (int i = 0;i <= 9;++i)
hany[i] = 0;
int *result = new int[N];
for (int i = 0;i < N;++i)
hany[(v[i] / tiz) % 10]++;
for (int i = 1;i <= 9;++i)
hany[i] += hany[i - 1];
for (int i = N-1;i >= 0;--i) {
result[hany[(v[i] / tiz) % 10] - 1] = v[i];
hany[(v[i] / tiz) % 10]--;
}
for (int i = 0;i < N;++i)
v[i] = result[i];
;
}
ofstream out("radixsort.out");
for (int i = 0;i < N;i+=10)
out << v[i] << " ";
}