Cod sursa(job #2838567)

Utilizator Edyci123Bicu Codrut Eduard Edyci123 Data 24 ianuarie 2022 01:07:34
Problema Curcubeu Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>
#define DIM 1000005

using namespace std;

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

int n, m;
int a[DIM], b[DIM], c[DIM], Next[DIM], ans[DIM];

int getNext(int x)
{
    if (Next[x] == x)
        return x;
    else
        return Next[x] = getNext(Next[x]);
}

int main()
{
    f >> n >> a[1] >> b[1] >> c[1];

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

    for (int i = 1; i <= n; i++)
        Next[i] = i;
    Next[n + 1] = n + 1;

    for (int i = n; i >= 1; i--)
    {
        int st = min(a[i], b[i]), dr = max(b[i], a[i]);
        for (int j = getNext(st); j <= dr; j = Next[j])
        {
            ans[j] = c[i];
            Next[j] = getNext(j + 1);
        }

    }

    for (int i = 1; i <= n; i++)
        g << ans[i] << "\n";

    return 0;
}