Cod sursa(job #2619560)

Utilizator levladiatorDragutoiu Vlad-Ioan levladiator Data 27 mai 2020 23:07:17
Problema Curcubeu Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>
#define NMAX 1000005
#define ll long long
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");

int n,a,b,c;
int rasp[NMAX],parent[NMAX];

struct querry
{
    int l,r,cul;
};
querry v[NMAX];

int find_set(int node)
{
    if(parent[node]==node)return node;
    return parent[node]=find_set(parent[node]);
}
int main()
{
    fin>>n>>a>>b>>c;
    for(int i=1;i<=n-1;i++)
    {
        parent[i]=i;
        v[i].l=min(a,b);
        v[i].r=max(a,b);
        v[i].cul=c;
        a=(a*(i+1))%n;
        b=(b*(i+1))%n;
        c=(c*(i+1))%n;
    }
    parent[n]=n;
    for(int i=n-1;i>=1;i--)
    {
        int st=v[i].l,dr=v[i].r,culoare=v[i].cul;
        st=find_set(st);
        while(st<=dr)
        {
            if(st!=dr)parent[st];
            if(rasp[st]==0)rasp[st]=culoare;
            st=find_set(st+1);
        }
    }
    for(int i=1;i<=n-1;i++)
        fout<<rasp[i]<<'\n';
}