Cod sursa(job #2104336)

Utilizator leraValeria lera Data 11 ianuarie 2018 16:21:01
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
#define Nmax 1000005

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

int N, p[Nmax],urm[Nmax];
struct
{
    int A, B, C;
}v[Nmax];
int main()
{
    fin >> N >> v[1].A >> v[1].B >> v[1].C;
    if(v[1].A > v[1].B)
        swap(v[1].A, v[1].B);
    for(int i = 2; i <= N - 1; i++)
    {
        v[i].A = (1LL * v[i - 1].A * i) % N;
        v[i].B = (1LL * v[i - 1].B * i) % N;
        v[i].C = (1LL * v[i - 1].C * i) % N;
        if(v[i].A > v[i].B)
            swap(v[i].A , v[i].B);
    }
    for(int i = N - 1; i >= 1; i--)
        for(int j = v[i].A; j <= v[i].B; j++)
            if(p[j] == 0)
            {
                p[j] = v[i].C;
                urm[j] = v[i].B;
            }
            else j = urm[j];
    for(int i = 1; i <= N - 1; i++)
        fout << p[i] << "\n";
    return 0;
}