Cod sursa(job #2070264)

Utilizator zdavid112zIon David-Gabriel zdavid112z Data 19 noiembrie 2017 13:16:25
Problema Curcubeu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

int n;
int a[100001], b[100001], c[100001], urm[100001], cul[100001];

int main()
{
    freopen("curcubeu.in", "r", stdin);
    freopen("curcubeu.out", "w", stdout);
    scanf("%d%d%d%d", &n, &a[1], &b[1], &c[1]);
    if(a[1] > b[1]) swap(a[1], b[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;
        if(a[i] > b[i]) swap(a[i], b[i]);
    }
    for(int i = n - 1; i > 0; i--)
    {
        for(int j = a[i]; j <= b[i];)
            if(cul[j] == 0)
            {
                cul[j] = c[i];
                urm[j] = b[i] + 1;
                j++;
            }
            else j = urm[j];
    }
    for(int i = 1; i < n; i++)
        printf("%d\n", cul[i]);
    return 0;
}