Mai intai trebuie sa te autentifici.

Cod sursa(job #1519302)

Utilizator hrazvanHarsan Razvan hrazvan 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;
}