Cod sursa(job #3152188)

Utilizator catalinmarincatalinmarin catalinmarin Data 24 septembrie 2023 11:54:51
Problema Curcubeu Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
using namespace std;
const int MaxN = 1e6+5;
int ai[MaxN + 1];
int bi[MaxN + 1];
int ci[MaxN + 1];
int v[MaxN + 1];
int urm[MaxN + 1];
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
int main(){
    int n, a1, b1, c1;
    fin >> n >> a1 >> b1 >> c1;
    ai[1] = a1;
    bi[1] = b1;
    ci[1] = c1;
    for (int i = 2; i < n; i++){
        ai[i] = (ai[i - 1] * i) % n;
        bi[i] = (bi[i - 1] * i) % n;
        ci[i] = (ci[i - 1] * i) % n;
    }

    for (int i = n - 1; i >= 1; i--) {
        int capIntSt = min(ai[i], bi[i]);
        int capIntDr = max(ai[i], bi[i]);
        int poz = capIntSt;
        while (poz < n && poz <= capIntDr) {
            if (urm[poz] == 0) {
                urm[poz] = capIntDr + 1;
                v[poz] = ci[i];
                poz++;
            } else {
                poz = urm[poz];
            }
        }
    }
    for (int i = 1; i < n; i++){
        fout << v[i] << '\n';
    }
    return 0;
}