Cod sursa(job #2015911)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 27 august 2017 23:27:42
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>
#include <vector>

using namespace std;

FILE *in,*out;

const int nmax = 1000000;

int a[1+nmax],b[1+nmax],c[1+nmax],v[1+nmax],jump[1+nmax];

int main()
{
    in = fopen("curcubeu.in","r");
    out = fopen("curcubeu.out","w");
    int n;
    fscanf(in,"%d %d %d %d",&n,&a[1],&b[1],&c[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;
        if(a[i] > b[i])
            swap(a[i],b[i]);
    }
    for(int i = n-1;i >= 1;i --)
    {
        int poz = a[i];
        while(poz <= b[i])
        {
            if(jump[poz] == 0)
            {
                jump[poz] = b[i]+1;
                v[poz] = c[i];
                poz ++;
            }
            else
            {
                poz = jump[poz];
            }

        }
    }
    for(int i = 1;i < n;i ++)
        fprintf(out,"%d\n",v[i]);
    return 0;
}