Cod sursa(job #3235733)

Utilizator bogdan1479Luca Bogdan Alexandru bogdan1479 Data 20 iunie 2024 19:20:09
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#define cin fin
#define cout fout

using namespace std;

const int NMAX = 1000002;

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

int n, a[NMAX], b[NMAX], c[NMAX], urma[NMAX], sol[NMAX];

int main()
{
    cin >> 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;
        urma[i] = i + 1;
    }
    urma[1] = 2, urma[n] = 0;
    for(int k = n - 1; k >= 1; k--)
    {
        int st = a[k], dr = b[k];
        if(st > dr) swap(st, dr);
        int i = st;
        while(i <= dr)
        {
            if(!sol[i])
            {
                urma[i] = dr + 1;
                sol[i] = c[k];
                i++;
            }
            else i = urma[i];
        }
    }
    for(int i = 1; i < n; i++)
        cout << sol[i] << '\n';
    return 0;
}