Pagini recente » Cod sursa (job #1962770) | Cod sursa (job #2055649) | Cod sursa (job #2458121) | Cod sursa (job #598420) | Cod sursa (job #2254865)
#include <bits/stdc++.h>
#define MaxN 1000005
std::ifstream InFile("curcubeu.in");
int N, A[MaxN], B[MaxN], C[MaxN],
Next[MaxN], Color[MaxN];
bool Seen[MaxN];
void Citire() {
InFile >> 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() {
freopen("curcubeu.out", "w", stdout);
for (int i=0; i<N; ++i)
Next[i+1] = i+1;
for (int j=N-1, i, a, b; j>0; --j) {
a = A[j], b = B[j];
if(A[j] > B[j])
std::swap(a, b);
for (i=a; i<=b; ++i)
if (!Seen[i])
Color[i] = C[j],
Seen[i] = 1,
Next[i] = b+1; // !!! Compresia
else i = Next[i]-1;
}
for (int i=0; i<N-1; ++i)
printf("%d\n", Color[i+1]);
}
int main() {
Citire();
Rezolvare();
return 0;
}