Cod sursa(job #1655810)

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

using namespace std;

const int N = 1000005;

int a[N], b[N], c[N];
int color[N], nxt[N];

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

    int n, i, l, r;

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

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

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

    return 0;
}