Mai intai trebuie sa te autentifici.
Cod sursa(job #1519302)
Utilizator | Data | 7 noiembrie 2015 10:08:14 | |
---|---|---|---|
Problema | Curcubeu | Scor | 100 |
Compilator | c | Status | done |
Runda | Arhiva de probleme | Marime | 0.99 kb |
#include <stdio.h>
#define MAXN 1000000
int st[MAXN + 1], dr[MAXN + 1], col[MAXN + 1], last[MAXN + 1];
int lcol[MAXN + 1];
int stata(int x){
if(lcol[x] == 0)
return x;
else{
last[x] = stata(last[x]);
return last[x];
}
}
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 = 1; i < n; i++){
st[i] = ca; dr[i] = cb; col[i] = cc;
if(st[i] > dr[i]){
aux = st[i]; st[i] = dr[i]; dr[i] = aux;
}
ca = 1LL * ca * (i + 1) % n;
cb = 1LL * cb * (i + 1) % n;
cc = 1LL * cc * (i + 1) % n;
last[i] = -1;
}
int poz;
for(i = n - 1; i > 0; i--){
poz = stata(st[i]);
while(poz <= dr[i]){
lcol[poz] = col[i];
last[poz] = dr[i] + 1;
poz++;
poz = stata(poz);
}
}
FILE *out = fopen("curcubeu.out", "w");
for(i = 1; i < n; i++)
fprintf(out, "%d\n", lcol[i]);
fclose(out);
return 0;
}