Cod sursa(job #3324775)

Utilizator McMeatGhenea Radu Stefan McMeat Data 23 noiembrie 2025 13:54:10
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fein("curcubeu.in");
ofstream g("curcubeu.out");
#define NMAX 1000001
#define INF 100010
#define pii pair<int,int>

// #define cin fein
// #define cout g

int a[NMAX], b[NMAX], c[NMAX], t[NMAX], v[NMAX], n;

void process_querries() {
    if(a[1]>b[1]) swap(a[1], b[1]);
    // cout<<a[1]<<" "<<b[1]<<" "<<c[1]<<endl;
    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;
        if(a[i]>b[i]) swap(a[i], b[i]);

        // cout<<a[i]<<" "<<b[i]<<" "<<c[i]<<endl;
    }
}

void solve() {
    process_querries();

    for(int i=1;i<=n;i++) {
        t[i]=i;
    }

    for(int i=n-1;i>0;i--) {
        int nc=a[i];
        int rc=t[nc];
        while(nc<=b[i]) {
            if(v[nc]==0) {
                v[nc]=c[i];
            }
            int aux=nc;
            nc=t[nc]+1;
            t[aux]=b[i];
        }
    }
}

void print() {
    for(int i=1;i<n;i++) {
        g<<v[i]<<" ";
    }
}

void read_data() {
    fein>>n>>a[1]>>b[1]>>c[1];
}

int main()
{
    std::ios_base::sync_with_stdio(false);
    // std::cin.tie(nullptr);
    // std::cout.tie(nullptr);
    read_data();
    solve();
    print();

    return 0;
}