Cod sursa(job #2811018)

Utilizator Alex_tz307Lorintz Alexandru Alex_tz307 Data 30 noiembrie 2021 21:25:22
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

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

const int kN = 1e6;
int a[kN], b[kN], c[kN], jump[kN], sol[kN];

void testCase() {
  int n;
  fin >> n >> a[1] >> b[1] >> c[1];
  jump[1] = 1;
  for (int i = 2; i < n; ++i) {
    a[i] = (int64_t)a[i - 1] * i % n;
    b[i] = (int64_t)b[i - 1] * i % n;
    c[i] = (int64_t)c[i - 1] * i % n;
    jump[i] = i;
  }
  jump[n] = n;
  for (int i = n - 1; i > 0; --i) {
    int l = min(a[i], b[i]), r = max(a[i], b[i]);
    while (l <= r) {
      if (jump[l] == l) {
        sol[l] = c[i];
        jump[l] = jump[r + 1];
      } else {
        l = jump[l];
      }
    }
  }
  for (int i = 1; i < n; ++i) {
    fout << sol[i] << '\n';
  }
}

int main() {
  int tests = 1;
  for (int tc = 1; tc <= tests; ++tc) {
    testCase();
  }
  fin.close();
  fout.close();
  return 0;
}