Cod sursa(job #3323370)

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

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

struct arbore
{

    int st,dr,c;
};

int main()
{

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

    vector<arbore>seg;

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

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

        arbore nou =
        {
            int((1LL * seg[i-1].st * (i+1)) % n),
            int((1LL * seg[i-1].dr * (i+1)) % n),
            int((1LL * 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<int>valori;

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

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

    while(!seg.empty())
    {

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

        int st = min(aux.st,aux.dr);
        int 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(int i=1; i<n; i++)
        fout<<rez[i]<<'\n';

    return 0;
}