Cod sursa(job #2567763)

Utilizator Teo_1101Mititelu Teodor Teo_1101 Data 3 martie 2020 18:45:19
Problema Curcubeu Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;

const int NMAX = 1000005;

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

int N, A, B, C;

struct culoare
{
    int s,d,c;
};

culoare V[NMAX];
culoare K;

int m[NMAX];
int sz[NMAX];
int D[NMAX];

int S[NMAX];

void Read(){

    fin >> N >> A >> B >> C;
    V[1].s = A;
    V[1].d = B;
    V[1].c = C;

    for( int i = 2; i < N; ++i )
    {
        V[i].s = (1LL * V[i-1].s * i )%N;
        V[i].d = (1LL * V[i-1].d * i )%N;
        V[i].c = (1LL * V[i-1].c * i )%N;

        if( V[i].s > V[i].d ) swap( V[i].s, V[i].d );
    }

}

void Solve()
{
    for( int i = N-1; i >= 1; --i )
    {
        int lf = V[i].s;
        int rg = V[i].d;
        int col = V[i].c;

        for( int i = lf; i <= rg; ++i )
        {
            if( D[i] != 0 )
                i = D[i];
            else
                S[i] = col;
            D[i] = rg;
        }
    }

    for( int i = 1; i < N; ++i )
        fout << S[i] << '\n';
}

int main()
{
    Read();
    Solve();
    return 0;
}