Cod sursa(job #2922852)

Utilizator MihaiZ777MihaiZ MihaiZ777 Data 10 septembrie 2022 13:12:03
Problema Curcubeu Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

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

const int MAX_N = 1000005;


struct Query {
    int a, b, c;
};

int n;
Query queries[MAX_N];
int ans[MAX_N];
int idx[MAX_N];
int limit[MAX_N];


int main() {
    int a, b, c;
    fin >> n >> a >> b >> c;

    queries[0] = {min(a, b) - 1, max(a, b) - 1, c};

    for (int i = 2; i < n; i++) {
        a =  (1ll * a * i) % n;
        b =  (1ll * b * i) % n;
        c =  (1ll * c * i) % n;
        queries[i - 1] = {min(a, b) - 1, max(a, b) - 1, c};
    }

    for (int i = n - 2; i >= 0; i--) {
        int currA = queries[i].a;
        int currB = queries[i].b;
        int currC = queries[i].c;

        for (int j = currA; j <= currB; j++) {
            if (ans[j] != 0) {
                j = limit[j];
                continue;
            }

            ans[j] = currC;
            limit[j] = currB;
        }
    }

    for (int i = 0; i < n - 1; i++) {
        fout << ans[i] << '\n';
    }
}