Cod sursa(job #2262283)

Utilizator AlexutAlex Calinescu Alexut Data 17 octombrie 2018 09:49:37
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda concurs_micut Marime 0.92 kb
#include <fstream>
#define NMAX 1000001
using namespace std;

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

int n, a[NMAX], b[NMAX], c[NMAX], v[NMAX],v1[NMAX];

int main()
{
    int i;
    cin >> n >> a[1] >> b[1] >> c[1];
    v1[1] = 1;
    for (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;
        v1[i]=i;
    }
    int st,dr;
    int p=n-1;
    while(p >= 1)
    {
        if(a[p]<b[p])
            {
                st=a[p];
                dr=b[p];
            }
        else
        {
            st=b[p];
            dr=a[p];
        }

        while(st<=dr)
        {
            if (v[st])
                st=v1[st];
            else
            {
                v[st]=c[p];
                v1[st]=dr+1;
                st++;
            }

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