Cod sursa(job #1829884)

Utilizator tudormaximTudor Maxim tudormaxim Data 15 decembrie 2016 20:00:36
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

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

const int maxn = 1e6 + 5;
int A[maxn], B[maxn], C[maxn], Color[maxn], Next[maxn];

int main() {
    ios_base :: sync_with_stdio (false);
    int n, i, j;
    fin >> n >> A[1] >> B[1] >> C[1];
    if (A[1] > B[1]) {
        swap(A[1], B[1]);
    }
    for (i = 2; i < n; i++) {
        A[i] = (A[i - 1] * i) % n;
        B[i] = (B[i - 1] * i) % n;
        C[i] = (C[i - 1] * i) % n;
        if (A[i] > B[i]) {
            swap(A[i], B[i]);
        }
    }
    for (i = n - 1; i; i--) {
        j = A[i];
        while(j <= B[i]) {
            if (Color[j]) {
                j = Next[Color[j]] + 1;
            } else {
                Color[j] = C[i];
                Next[Color[j]] = j;
                j++;
            }
        }
    }
    for (i = 1; i < n; i++) {
        fout << Color[i] <<  "\n";
    }
    fin.close();
    fout.close();
    return 0;
}