Pagini recente » Cod sursa (job #2867130) | Cod sursa (job #2357898) | Cod sursa (job #782850) | Cod sursa (job #2053512) | Cod sursa (job #1534174)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
const int NMax = 1e6 + 5;
int n;
int lo[NMax], hi[NMax], v[NMax], A[NMax], B[NMax], C[NMax];
int main(){
int a, b, c;
fin >> n >> a >> b >> c;
A[1] = a; B[1] = b; C[1] = c;
for(int i = 2; i < n; i++){
A[i] = (1LL * A[i - 1] * i) % n;
B[i] = (1LL * B[i - 1] * i) % n;
C[i] = (1LL * C[i - 1] * i) % n;
}
int m, M;
for(int j = n - 1; j > 0; j--){
m = min(A[j], B[j]); m = min(m, lo[m]);
M = max(A[j], B[j]); M = max(M, hi[M]);
for(int i = min(A[j], B[j]); i <= max(A[j], B[j]); i++){
if(v[i] == 0){
v[i] = C[j];
} else {
i = hi[i];
}
lo[i] = m;
hi[i] = M;
}
hi[m] = M;
lo[M] = m;
}
for(int i = 1; i < n; i++){
fout << v[i] << "\n";
}
return 0;
}