Cod sursa(job #2104325)

Utilizator leraValeria lera Data 11 ianuarie 2018 16:15:49
Problema Curcubeu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
#define Nmax 1000005

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

long long N, A[Nmax], B[Nmax], C[Nmax], p[Nmax],urm[Nmax];
void un(int nod, int cul)
{
    p[nod] = cul;
}
int main()
{
    fin >> N >> A[1] >> B[1] >> C[1];
    if(A[1] > B[1])swap(A[1], B[1]);
    for(int i = 2; i <= N - 1; 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 >= 1; i--)
        for(int j = A[i]; j <= B[i]; j++)
            if(p[j] == 0)
            {
                un(j, C[i]);
                urm[j] = B[i];
            }
            else j = urm[j];
    for(int i = 1; i <= N - 1; i++)
        fout << p[i] << "\n";
    return 0;
}