Cod sursa(job #1803127)

Utilizator Mihai_PredaPreda Mihai Dragos Mihai_Preda Data 10 noiembrie 2016 23:28:40
Problema Curcubeu Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int nMax = 1000005;

int n;
int a[nMax], b[nMax], c[nMax];
int v[nMax];
int urm[nMax];

void citire()
{
    in >> n;
    in >> a[1] >> b[1] >> c[1];
}

void rezolvare()
{
    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;
        urm[i-1] = i;
    }
    int st, dr;
    for(int i = n-1; i > 0; --i)
    {
        st = min(a[i], b[i]);
        dr = max(a[i], b[i]);
        int j = st;
        while(j <= dr)
        {
            if(v[j] == 0)
            {
                v[j] = c[i];
                urm[j] = dr + 1;
                ++j;
            }
            else
                j = urm[j];
        }
    }
}

void afisare()
{
    for(int i = 1; i < n; ++i)
        out << v[i] << "\n";
}

int main()
{
    citire();
    rezolvare();
    afisare();
    return 0;
}