Cod sursa(job #1534198)

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

using namespace std;

const int Speranta = 1e6 + 5;

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

int main(){
    freopen("curcubeu.in", "r", stdin);
    freopen("curcubeu.out", "w", stdout);
    int a, b, c;
    scanf("%d %d %d %d", &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 Hi;
    for(int j = n - 1; j > 0; j--){
        Hi = max(A[j], B[j]);
        for(int i = min(A[j], B[j]); i <= Hi; i++){
            if(v[i] == 0){
                v[i] = C[j];
                hi[i] = Hi;
            } else {
                i = hi[i];
            }
        }
    }
    for(int i = 1; i < n; i++){
        printf("%d\n", v[i]);
    }
    return 0;
}