Cod sursa(job #2619559)

Utilizator levladiatorDragutoiu Vlad-Ioan levladiator Data 27 mai 2020 23:03:44
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 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()
{
    cin>>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;
        for(int j=find_set(st);j<=dr;j=find_set(j))
        {
            if(rasp[j]==0)rasp[j]=culoare;
            parent[j]=j+1;
        }
    }
    for(int i=1;i<=n-1;i++)
        fout<<rasp[i]<<'\n';
}