Cod sursa(job #3193066)

Utilizator PatruMihaiPatru Mihai PatruMihai Data 13 ianuarie 2024 22:21:37
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 1e6 + 7;

long long  a[NMAX], b[NMAX], c[NMAX], urm[NMAX], ans[NMAX];

int main()
{
    int n;

    fin >> n >> a[1] >> b[1] >> c[1];
    for (int i = 2; i <= n; 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 = 1; i < n; i++)
        urm[i] = i + 1;

    for (int i = n - 1; i >= 1; i--)
    {
        if (a[i] > b[i])
        {
            swap(a[i], b[i]);
        }

        for (int j = a[i]; j <= b[i]; j++)
        {
            if (ans[j] != 0)
            {
                j = urm[j] - 1;
            }
            else
            {
                ans[j] = c[i];
                urm[j] = b[i] + 1;
            }
        }
    }

    for (int i = 1; i < n; i++)
    {
        fout << ans[i] << '\n';
    }

    return 0;
}