Cod sursa(job #3253550)

Utilizator MateiAlex24Diamandi Matei MateiAlex24 Data 3 noiembrie 2024 11:49:04
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
struct abc{
    long long int a,b,c;
} vabc[1000001];

long long int n, v[1000001], vtati[1000001];

int rad(int x){
    int r=x,aux;
    while (vtati[r] != r){
        r = vtati[r];
    }
    while (vtati[x] != x){
        aux = vtati[x];
        vtati[x] = r;
        x = aux;
    }
    return r;
}

int main()
{
    fin>>n;
    fin>>vabc[1].a>>vabc[1].b>>vabc[1].c;
    
    for (int i=1; i<n; i++){
        vtati[i] = i;
    }
    
    for (int i=2; i<n; i++){
        vabc[i].a = (vabc[i-1].a*i)%n;
        vabc[i].b = (vabc[i-1].b*i)%n;
        vabc[i].c = (vabc[i-1].c*i)%n;
    }
    
    for (int i=n-1; i>=1; i--){
        int st,dr;
        st = min(vabc[i].a, vabc[i].b);
        dr = max(vabc[i].a, vabc[i].b);
        
        for (int j=rad(st); j<=dr; j=rad(j)+1){
            if (v[j] == 0){
                v[j] = vabc[i].c;
                vtati[j] = rad(dr);
            }
        }
    }
    
    for (int i=1; i<n; i++){
        fout<<v[i]<<"\n";
    }

    return 0;
}