Cod sursa(job #1728110)

Utilizator andreigeorge08Sandu Ciorba andreigeorge08 Data 12 iulie 2016 11:59:07
Problema Curcubeu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream>
#include<iostream>
using namespace std;
ifstream in("curcubeu.in");
ofstream out("curcubeu.out");
const int NMAX = 1000003;

long long nxt[NMAX],A[NMAX],B[NMAX],C[NMAX],N,a,b,c,sol[NMAX];

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] = (1LL*A[i-1] * i) % N;
        B[i] = (1LL*B[i-1] * i) % N;
        C[i] = (1LL*C[i-1] * i) % N;
        nxt[i] = i;
    }
    nxt[N] = N;
    for(int i = N - 1 ; i >= 1 ; --i){
        a = min(A[i],B[i]);
        b = max(A[i],B[i]);
        c = C[i];
        while(a <= b){
            if(sol[a]){
                a = nxt[a];
                continue;
            }
            sol[a] = c;
            nxt[a] = nxt[b+1];
            ++a;
        }
    }
    for(int i = 1 ; i < N ; ++i)
        out<<sol[i]<<"\n";
}