Pagini recente » Cod sursa (job #1374683) | Cod sursa (job #866928) | Monitorul de evaluare | Cod sursa (job #296722) | Cod sursa (job #1518732)
#include <stdio.h>
#define MAXN 1000000
FILE *out;
int n, a, b, c;
int arb[4 * MAXN];
void update(int p, int st ,int dr){
if(st >= a && dr <= b)
arb[p] = c;
else{
int mid = (st + dr) / 2;
if(arb[p] != 0)
arb[2 * p + 1] = arb[2 * p + 2] = arb[p];
arb[p] = 0;
if(a <= mid)
update(2 * p + 1, st, mid);
if(b >= mid + 1)
update(2 * p + 2, mid + 1, dr);
}
}
void query(int p, int st, int dr){
if(st == dr)
fprintf(out, "%d\n", arb[p]);
else{
int mid = (st + dr) / 2;
if(arb[p] != 0)
arb[2 * p + 1] = arb[2 * p + 2] = arb[p];
arb[p] = 0;
query(2 * p + 1, st, mid);
query(2 * p + 2, mid + 1, dr);
}
}
int main(){
FILE *in = fopen("curcubeu.in", "r");
int i, ca, cb, cc, aux;
fscanf(in, "%d%d%d%d", &n, &ca, &cb, &cc);
fclose(in);
for(i = 1; i < n; i++){
a = ca - 1; b = cb - 1; c = cc;
if(a > b){
aux = a; a = b; b = aux;
}
update(0, 0, n - 2);
ca = 1LL * ca * (i + 1) % n;
cb = 1LL * cb * (i + 1) % n;
cc = 1LL * cc * (i + 1) % n;
}
out = fopen("curcubeu.out", "w");
query(0, 0, n - 2);
fclose(out);
return 0;
}