Cod sursa(job #2047241)

Utilizator dragos231456Neghina Dragos dragos231456 Data 24 octombrie 2017 17:49:35
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("curcubeu.in");
ofstream g("curcubeu.out");
int n,a,b,c,arb[4000005];

void update(int nod,int lt,int rt,int x,int y)
{
    if(x>rt || y<lt) return;
    if(arb[nod] && lt!=rt)
    {
        arb[nod*2]=arb[nod*2+1]=arb[nod];
        arb[nod]=0;
    }
    if(x<=lt && rt<=y)
    {
        arb[nod]=c;
        return;
    }
    if(lt==rt) return;
    int md=(lt+rt)/2;
    if(md>=x) update(nod*2,lt,md,x,y);
    if(md<y) update(nod*2+1,md+1,rt,x,y);
}

void afisare(int nod,int lt,int rt)
{
    if(arb[nod] && lt!=rt)
    {
        arb[nod*2]=arb[nod*2+1]=arb[nod];
        arb[nod]=0;
    }
    if(lt==rt)
    {
        g<<arb[nod]<<'\n';
        return;
    }
    int md=(lt+rt)/2;
    afisare(nod*2,lt,md);
    afisare(nod*2+1,md+1,rt);

}

int main()
{
    f>>n>>a>>b>>c;
    for(int i=1;i<n;++i)
    {
        a=(a*i)%n;
        b=(b*i)%n;
        c=(c*i)%n;
        update(1,1,n-1,a,b);
    }
    afisare(1,1,n-1);
    return 0;
}