Pagini recente » Istoria paginii runda/succes123 | Cod sursa (job #1200867) | Cod sursa (job #2169752) | Cod sursa (job #806951) | Cod sursa (job #1518740)
#include <stdio.h>
#define MAXN 1000000
int st[MAXN], dr[MAXN], col[MAXN], last[MAXN];
int lcol[MAXN];
int stata(int x, int n){
if(x >= n || (x < n && lcol[x] == 0)){
return x;
}
else{
int rez = stata(last[x], n);
last[x] = rez;
return rez;
}
}
int main(){
FILE *in = fopen("curcubeu.in", "r");
int i, ca, cb, cc, aux, n;
fscanf(in, "%d%d%d%d", &n, &ca, &cb, &cc);
fclose(in);
for(i = 0; i < n - 1; i++){
st[i] = ca - 1; dr[i] = cb - 1; col[i] = cc;
if(st[i] > dr[i]){
aux = st[i]; st[i] = dr[i]; dr[i] = aux;
}
ca = 1LL * ca * (i + 2) % n;
cb = 1LL * cb * (i + 2) % n;
cc = 1LL * cc * (i + 2) % n;
last[i] = i + 1;
}
int poz;
for(i = n - 2; i >= 0; i--){
poz = stata(st[i], n - 1);
while(poz <= dr[i]){
lcol[poz] = col[i];
poz = stata(poz, n - 1);
}
}
FILE *out = fopen("curcubeu.out", "w");
for(i = 0; i < n - 1; i++)
fprintf(out, "%d\n", lcol[i]);
fclose(out);
return 0;
}