Cod sursa(job #2567715)

Utilizator Radu_FilipescuFilipescu Radu Radu_Filipescu Data 3 martie 2020 18:30:53
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

const int NMAX = 1000005;

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

int N;
struct mzg {
   int L, R;
   int c;
} a[NMAX];

int jump[NMAX];
int color[NMAX];


void Read() {   /// SE CITESTE DATELE
    fin >> N >> a[1].L >> a[1].R >> a[1].c;

    for( int i = 2; i < N; ++i ) {
       a[i].L = ( 1LL * a[i - 1].L * i ) % N;
       a[i].R = ( 1LL * a[i - 1].R * i ) % N;
       a[i].c = ( 1LL * a[i - 1].c * i ) % N;
    }
}

void Do()
{
    for( int i = N - 1; i > 0; --i ) {
       int lf = a[i].L, rg = a[i].R;

       jump[i] = rg;
       for( int j = lf; j <= rg; ++j ) {
         if( color[j] != 0 ) { j = jump[ color[j] ]; continue; }
         color[j] = i;
       }
    }

    for( int i = 1; i < N; ++i )
      fout << a[color[i]].c << '\n';
}

int main()
{
    Read();
    Do();

    return 0;
}