Cod sursa(job #1665330)

Utilizator radu_cebotariRadu Cebotari radu_cebotari Data 26 martie 2016 20:40:29
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<fstream>
#include<iostream>
using namespace std;
ifstream in("curcubeu.in");
ofstream out("curcubeu.out");
const int NMAX = 1000006;

int next[NMAX],A[NMAX],B[NMAX],C[NMAX],N,a,b,c,sol[NMAX];

void color(int poz)
{
    if(poz > b)
        return;

    if(!sol[poz]){
        sol[poz] = c;
        next[poz] = next[b+1];
        color(poz + 1);
    }
    else
        color(next[poz]);
}

int main()
{

    in>>N>>a>>b>>c;
    A[1] = a;
    B[1] = b;
    C[1] = c;
    for(int i = 2 ; i < N ; ++i){
        A[i] = (A[i-1] * i)%N;
        B[i] = (B[i-1] * i)%N;
        C[i] = (C[i-1] * i)%N;
        next[i] = i;
    }
    for(int i = N - 1 ; i >= 1 ; --i){
        a = min(A[i],B[i]);
        b = max(A[i],B[i]);
        c = C[i];
        color(a);
    }
    for(int i = 1 ; i < N ; ++i)
        out<<sol[i]<<"\n";
}