Cod sursa(job #2242634)

Utilizator dahaandreiDaha Andrei Codrin dahaandrei Data 19 septembrie 2018 09:14:11
Problema Curcubeu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>

using namespace std;

ifstream in("curcubeu.in");
ofstream out("curcubeu.out");

const int MAXN = 1e6;

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

int main() {
  in >> 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)
    out << col[i] << '\n';

  return 0;
}