Cod sursa(job #2920393)

Utilizator andreimocianAndrei Mocian andreimocian Data 23 august 2022 22:13:04
Problema Curcubeu Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream> 
#include <fstream> 

using namespace std; 

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

const int NMAX = 1000005;
int n;
int sol[NMAX], N[NMAX], A[NMAX], B[NMAX], C[NMAX];

void solve()
{
    int a, b, c;
    fin >> n >> a >> b >> c;
    if(a > b)
        swap(a, b);
    A[1] = a;
    B[1] = b;
    C[1] = c;
    for(int i = 2; i <= n; i++)
    {
        a = (a * i) % n;
        b = (b * i) % n;
        c = (c * i) % n;
        if(a > b)
            swap(a, b);
        A[i] = a;
        B[i] = b;
        C[i] = c;
    }
    for(int i = n - 1; i >= 1; i--)
    {
        for(int j = A[i]; j <= B[i]; j++)
        {
            while(N[j] != 0)
                j = N[j];
            if(j <= B[i])
            {
                N[j] = B[i] + 1;
                sol[j] = C[i];
            }
            else
                break;
        }
    }
    for(int i = 1; i < n; i++)
    {
        fout << sol[i] << "\n";
    }
}

int main()
{ 
    solve();
    return 0;
}