Pagini recente » Cod sursa (job #323057) | Cod sursa (job #912666) | Cod sursa (job #2066779) | Cod sursa (job #1804093) | Cod sursa (job #2492399)
#include <cstdio>
#include <fstream>
#define NMAX 1000005
using namespace std;
struct chestie{
int st, dr, c;
}query[NMAX];
int nex[NMAX], rez[NMAX];
int main()
{
freopen("curcubeu.in", "r", stdin);
freopen("curcubeu.out", "w", stdout);
long long N, A1, B1, C1;
scanf("%lld%lld%lld%lld", &N, &A1, &B1, &C1);
query[1] = {.st = min(A1, B1), .dr = max(A1, B1), .c = C1};
for(int i = 2; i <= N - 1; ++i){
A1 = (A1 * i) % N;
B1 = (B1 * i) % N;
C1 = (C1 * i) % N;
query[i] = {.st = min(A1, B1), .dr = max(A1, B1), .c = C1};
}
for(int i = 1; i < N; ++i)
nex[i] = i + 1;
for(int i = N - 1; i >= 1; --i){
int j = query[i].st;
while(j <= query[i].dr){
if(rez[j] == 0)
rez[j] = query[i].c;
int cj = j;
j = nex[j];
nex[cj] = max(nex[cj], nex[query[i].dr]);
}
}
for(int i = 1; i < N; ++i)
printf("%d\n", rez[i]);
return 0;
}