Cod sursa(job #2648508)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 11 septembrie 2020 11:45:00
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <cstdio>
#include <algorithm>

using namespace std;

const int N = 1000000 + 7;
int n;
int a;
int b;
int c;
int l[N];
int r[N];
int x[N];
int last[N];
int col[N];

int main()
{
    freopen ("curcubeu.in", "r", stdin);
    freopen ("curcubeu.out", "w", stdout);

    scanf("%d %d %d %d", &n, &a, &b, &c);
    l[1] = min(a, b);
    r[1] = max(a, b);
    x[1] = c;
    last[1] = 1;
    for (int i = 2; i < n; i++)
    {
        a = 1LL * a * i % n;
        b = 1LL * b * i % n;
        c = 1LL * c * i % n;
        l[i] = min(a, b);
        r[i] = max(a, b);
        x[i] = c;
        last[i] = i;
    }
    for (int i = n - 1; i >= 1; i--)
    {
        for (int j = l[i]; j <= r[i]; j++)
        {
            if (col[j])
            {
                int u = last[j] + 1;
                last[j] = max(last[j], r[i]);
                j = u;
            }
            else
            {
                col[j] = x[i];
                last[j] = r[i];
            }
        }
    }
    for (int i = 1; i < n; i++)
    {
        printf("%d\n", col[i]);
    }
}