Pagini recente » Cod sursa (job #1424925) | Cod sursa (job #384482) | Cod sursa (job #2076271) | Cod sursa (job #617317) | Cod sursa (job #1463476)
#include <fstream>
#include <vector>
using namespace std;
const int kMaxN = 1000005;
struct Upd {
int a, b, c;
} u[kMaxN];
int N, col[kMaxN];
int nxt[kMaxN];
void Init() {
for (int i = 2; i < N; ++i) {
u[i].a = ((int64_t)i * u[i - 1].a) % N;
u[i].b = ((int64_t)i * u[i - 1].b) % N;
u[i].c = ((int64_t)i * u[i - 1].c) % N;
}
for (int i = 1; i < N; ++i)
nxt[i] = i + 1;
}
void Update(const Upd &crt) {
vector<int> pos;
for (int i = min(crt.a, crt.b); i <= max(crt.a, crt.b); i = nxt[i]) {
if (!col[i]) col[i] = crt.c;
pos.push_back(i);
}
for (int i : pos)
nxt[i] = nxt[pos.back()];
}
void Print() {
freopen("curcubeu.out", "w", stdout);
for (int i = 1; i < N; ++i)
printf("%d\n", col[i]);
}
int main() {
ifstream("curcubeu.in") >> N >> u[1].a >> u[1].b >> u[1].c;
Init();
for (int i = N - 1; i; --i)
Update(u[i]);
Print();
return 0;
}