Cod sursa(job #2660254)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 18 octombrie 2020 17:06:19
Problema Curcubeu Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>

using namespace std;

const int NMAX = 1000000;

int culoare[1 + NMAX];
int dr[1 + NMAX];

int a[NMAX];
int b[NMAX];
int c[NMAX];

int main()
{
  ifstream in("curcubeu.in");
  ofstream out("curcubeu.out");
  int n;

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

    if (a[i] > b[i])
      swap(a[i], b[i]);
  }

  for (int i = 1; i <= n; i++)
  {
    dr[i] = i;
  }

  for (int i = n - 1; i >= 1; i--)
  {
    for (int j = a[i]; j <= b[i]; j = dr[j])
    {
      if (culoare[j] == 0)
      {
        culoare[j] = c[i];
        dr[j] = dr[j + 1];
      }
    }
  }

  for (int i = 1; i <= n - 1; i++)
  {
    out << culoare[i] << '\n';
  }
  out << '\n';

  return 0;
}