Cod sursa(job #2619562)

Utilizator levladiatorDragutoiu Vlad-Ioan levladiator Data 27 mai 2020 23:13:43
Problema Curcubeu Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 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>>v[1].l>>v[1].r>>v[1].cul;
    if(v[1].l>v[1].r)swap(v[1].l,v[1].r);
    for(int i=2;i<=n-1;i++)
    {
        parent[i]=i;
        v[i].l=min((v[i-1].l*i)%n,(v[i-1].r*i)%n);
        v[i].r=max((v[i-1].l*i)%n,(v[i-1].r*i)%n);
        v[i].cul=(v[i-1].cul*i)%n;

    }
    parent[1]=1;
    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=st;j<=dr;)
        {
            if(!rasp[j])
            {
                rasp[j]=culoare;
                parent[j]=dr+1;
                j++;
            }
            else j=parent[j];
        }
    }
    for(int i=1;i<=n-1;i++)
        fout<<rasp[i]<<'\n';
}