Cod sursa(job #3323367)

Utilizator Octa-pe-infoNechifor Octavian Octa-pe-info Data 18 noiembrie 2025 10:14:13
Problema Curcubeu Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

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

struct arbore{

    long long st,dr,c;
};

int main()
{

    long long n,a,b,c;
    fin>>n>>a>>b>>c;

    vector<arbore>seg;

    seg.push_back({a,b,c});

    for(long long i=1;i<n-1;i++){

        arbore nou = {(seg[i-1].st * (i+1)) % n,(seg[i-1].dr * (i+1)) % n,(seg[i-1].c * (i+1)) % n};
        seg.push_back(nou);
        //cout<<seg[i-1].st<<'\n';
        //cout<<seg[i-1].st * (i+1)<<" "<<(seg[i-1].st * (i+1)) % n;
    }

    set<long long>valori;

    for(long long i=1;i<n;i++){
        valori.insert(i);
    }

    vector<long long>rez(n+1,0);

    while(!seg.empty()){

        auto aux = seg.back();
        seg.pop_back();

        long long st = min(aux.st,aux.dr);
        long long dr =  max(aux.st,aux.dr);

        auto it = valori.lower_bound(st);

        while(it != valori.end() && *it <= dr){

            rez[*it] = aux.c;
            it = next(it);
            valori.erase(prev(it));
        }
    }

    for(long long i=1;i<n;i++)
        fout<<rez[i]<<'\n';

    return 0;
}