Cod sursa(job #2462043)

Utilizator StanCatalinStanCatalin StanCatalin Data 26 septembrie 2019 18:11:42
Problema Curcubeu Scor 0
Compilator c-32 Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

const int dim = 1000001;

int n,parent[dim],ans[dim],a[dim],b[dim],c[dim];

int Find(int x)
{
    if (x == parent[x])
    {
        return x;
    }
    return parent[x] = Find(parent[x]);
}

int main()
{
    int i,j;
    in >> n >> a[1] >> b[1] >> c[1];
    for (i=1; i<=n; i++)
    {
        parent[i] = i;
    }
    int a_nou,b_nou,c_nou;
    for (i=2; i<=n-1; i++)
    {
        a[i] = (1LL*a[i-1]*i)%n;
        b[i] = (1LL*b[i-1]*i)%n;
        c[i] = (1LL*c[i-1]*i)%n;
    }

    int st,dr;


    for (i=n-1; i>= 1; i--)
    {
        st = min(a[i],b[i]);
        dr = max(a[i],b[i]);
        for (j=Find(st); j<=dr; j = Find(j))
        {
            ans[j] = c[i];
            parent[j] = j+1;
        }
    }
    for (i=1; i<=n-1; i++)
    {
        out << ans[i] << "\n";
    }
    return 0;
}