Pagini recente » Cod sursa (job #2648597) | Cod sursa (job #1178015) | Cod sursa (job #1971035) | Cod sursa (job #2721925) | Cod sursa (job #2721930)
#include <bits/stdc++.h>
#define MAXN 1000005
std::ifstream input("curcubeu.in");
std::ofstream output("curcubeu.out");
int N, A[MAXN], B[MAXN], C[MAXN], Color[MAXN];
std::vector <int> begin[MAXN];
std::vector <int> end[MAXN];
std::set <int> set;
void Citire() {
input >> N >> A[1] >> B[1] >> C[1];
for (int i=1; i<N-1; ++i) {
A[i+1] = (1LL*A[i]*(i+1)) % N,
B[i+1] = (1LL*B[i]*(i+1)) % N,
C[i+1] = (1LL*C[i]*(i+1)) % N;
}
}
void Rezolvare() {
for (int i=1; i<=N-1; ++i) {
int u = std::min(A[i], B[i]);
int v = std::max(A[i], B[i]);
begin[u].push_back(i);
end[v].push_back(i);
}
for (int i=0; i<=N-1; ++i) {
for (auto &it:begin[i]) set.insert(-it);
if (!set.empty()) Color[i] = C[-*set.begin()];
for (auto &it:end[i]) set.erase(-it);
}
for (int i=1; i<=N-1; ++i)
output << Color[i] << '\n';
}
int main() {
Citire();
Rezolvare();
return 0;
}