Cod sursa(job #1534189)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 23 noiembrie 2015 14:32:41
Problema Curcubeu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMax = 1e6 + 5;

int n;
int hi[NMax], v[NMax], A[NMax], B[NMax], C[NMax];

int main(){
    int a, b, c;
    fin >> 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;
    }
    int M, Lo, Hi;
    for(int j = n - 1; j > 0; j--){
        M = max(A[j], B[j]); M = max(M, hi[M]);
        Lo = min(A[j], B[j]); Hi = max(A[j], B[j]);
        for(int i = Lo; i <= Hi; i++){
            if(v[i] == 0){
                v[i] = C[j];
            } else {
                i = hi[i];
            }
            hi[i] = M;
        }
    }
    for(int i = 1; i < n; i++){
        fout << v[i] << "\n";
    }
    return 0;
}