Cod sursa(job #1655808)

Utilizator depevladVlad Dumitru-Popescu depevlad Data 18 martie 2016 12:51:55
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <vector>

using namespace std;

int main() {
    ifstream in("curcubeu.in");
    ofstream out("curcubeu.out");

    int n;

    in >> n;

    vector < int > a(n, 0), b(n, 0), c(n, 0);

    in >> a[1] >> b[1] >> c[1];
    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;
    }

    vector < int > color(n, 0), next(n, 0);
    for(int i = n - 1; i > 0; i--) {
        int l = min(a[i], b[i]);
        int r = max(a[i], b[i]);
        while(l <= r) {
            if(!color[l]) {
                color[l] = c[i];
                next[l++] = r + 1;
            }
            else {
                l = next[l];
            }
        }
    }

    for(int i = 1; i < n; i++) {
        out << color[i] << '\n';
    }

    return 0;
}