Cod sursa(job #3170907)

Utilizator Allie28Radu Alesia Allie28 Data 18 noiembrie 2023 11:09:19
Problema Curcubeu Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <iostream>
#include <queue>
#include <vector>

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

const int LMAX = 1000001;
int a[LMAX], b[LMAX], c[LMAX], exactcol[LMAX], nxt[LMAX];

int main() {
    int n;
    fin >> n >> a[1] >> b[1] >> c[1];
    nxt[1] = 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;
        nxt[i] = i;
    }
    nxt[n] = n;
    for (int i = n-1; i > 0; i--) {
        int x, y;
        x = min(a[i], b[i]);
        y = max(a[i], b[i]);
        while (x <= y) {
            if (exactcol[x] == 0) {
                exactcol[x] = c[i];
                nxt[x] = y + 1;
                x++;
            }
            else {
                x = nxt[x+1];
            }
        }
    }

    for (int i = 1; i < n; i++) {
        fout << exactcol[i]<<endl;
    }

    fin.close();
    fout.close();

    return 0;
}