Pagini recente » Cod sursa (job #2600392) | Cod sursa (job #147224) | Cod sursa (job #1662099) | Cod sursa (job #917751) | Cod sursa (job #2254856)
#include <bits/stdc++.h>
#define MaxN 1000005
#define ll long long
std::ifstream InFile("curcubeu.in");
std::ofstream OutFile("curcubeu.out");
ll N, A[MaxN], B[MaxN], C[MaxN],
Next[MaxN], Color[MaxN];
void Citire() {
InFile >> N >> A[1] >> B[1] >> C[1];
for (int i=1; i<N-1; ++i)
A[i+1] = (A[i]*(i+1)) % N,
B[i+1] = (B[i]*(i+1)) % N,
C[i+1] = (C[i]*(i+1)) % N;
}
void Rezolvare() {
ll a, b;
for (int i=0; i<N; ++i)
Next[i+1] = i+1;
for (int i=N, j; i>0; --i) {
a = A[i-1], b = B[i-1];
if(A[i-1] > B[i-1])
std::swap(a, b);
for (j=a; j<=b; ++j)
if (!Color[j])
Color[j] = C[i-1],
Next[j] = b+1; // !!! Compresia
else j = Next[j]-1;
}
for (int i=0; i<N-1; ++i)
OutFile << Color[i+1] << '\n';
}
int main() {
Citire();
Rezolvare();
return 0;
}