Pagini recente » Cod sursa (job #898494) | Cod sursa (job #2697620) | Cod sursa (job #1077533) | Cod sursa (job #1909611) | Cod sursa (job #2689842)
#include <iostream>
#include <fstream>
#include <algorithm>
const int NMAX = 1e6;
int n;
int color[1 + NMAX];
int next[1 + NMAX];
int a[1 + NMAX], b[1 + NMAX], c[1 + NMAX];
int main() {
std::ifstream in("curcubeu.in");
std::ofstream out("curcubeu.out");
in >> n >> a[1] >> b[1] >> c[1];
for (int i = 2; i < n; ++i) {
a[i] = (int)(((int64_t)a[i - 1] * i) % n);
b[i] = (int)(((int64_t)b[i - 1] * i) % n);
c[i] = (int)(((int64_t)c[i - 1] * i) % n);
if (a[i] > b[i])
std::swap(a[i], b[i]);
}
for (int i = 1; i <= n; ++i)
next[i] = i;
for (int q = n - 1; q >= 1; --q) {
for (int i = a[q]; i <= b[q]; i = next[i + 1]) {
if (color[i] == 0) {
color[i] = c[q];
next[i] = next[b[q] + 1];
}
}
}
for (int i = 1; i < n; ++i)
out << color[i] << '\n';
return 0;
}