Cod sursa(job #2262233)

Utilizator mircearoataMircea Roata Palade mircearoata Data 17 octombrie 2018 09:00:30
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda concurs_micut Marime 0.88 kb
#include <fstream>

using namespace std;

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

int n, a[1000001], b[1000001], c[1000001];
int v[1000001], Next[1000001];

int main()
{
    in >> n >> a[1] >> b[1] >> c[1];
    Next[1] = 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;
        Next[i] = i;
    }
    int i = n - 1,st,dr;
    while(i >= 1)
    {
        st = min(a[i],b[i]);
        dr = max(a[i],b[i]);
        while(st <= dr)
        {
            if (v[st])
                st = Next[st];
            else
            {
                v[st] = c[i];
                Next[st] = dr + 1;
                ++st;
            }

        }
        --i;
    }
    for(int i = 1; i < n; i++)
        out << v[i] << '\n';
    return 0;
}