Cod sursa(job #2242638)

Utilizator dahaandreiDaha Andrei Codrin dahaandrei Data 19 septembrie 2018 09:19:50
Problema Curcubeu Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>
#include <iostream>

using namespace std;

const int MAXN = 1e6;

int n, a[MAXN], b[MAXN], c[MAXN];
int col[MAXN], urm[MAXN];

int main() {
  freopen("curcubeu.in", "r", stdin);
  freopen("curcubeu.out", "w", stdout);

  scanf("%i%i%i%i", &n, &a[1], &b[1], &c[1]);

  for (int i = 2; i <= n - 1; ++ i) {
    a[i] = (1LL * a[i - 1] * i) % n;
    b[i] = (1LL * b[i - 1] * i) % n;
    c[i] = (1LL * c[i - 1] * i) % n;
  }

  for (int i = n - 1; i; -- i) {
    int st = min(a[i], b[i]);
    int dr = max(a[i], b[i]);
    while (st <= dr) {
      if (!col[st]) {
        col[st] = c[i];
        urm[st] = dr + 1;
        ++ st;
      }
      else {
        st = urm[st];
      }
    }
  }

  for (int i = 1; i <= n - 1; ++ i)
    printf("%i\n", col[i]);

  return 0;
}