Cod sursa(job #2005755)

Utilizator patcasrarespatcas rares danut patcasrares Data 28 iulie 2017 01:43:48
Problema Curcubeu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<fstream>
#include<iostream>
#include<vector>
#include<set>
#define DN 10000100
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
int st[DN];
int dr[DN];
int v[DN];
int r[DN];
int ne[DN],t;
int n,a,b,c;
int nex(int x)
{
    while(ne[x])
        x=nex(ne[x]);
    return x;
}
int main()
{
    fin>>n>>a>>b>>c;
    for(int i=1;i<n;i++)
    {
        long long d=a,e=b,f=c;
        a=(d*i)%n;
        b=(e*i)%n;
        c=(f*i)%n;
        st[i]=min(a,b);
        dr[i]=max(a,b);
        v[i]=c;
    }
    for(int i=n-1;i>0;i--)
    {
        int poz=st[i];
        while(poz<=dr[i])
        {
            poz=nex(poz);
            if(poz<=dr[i])
            {
                r[poz]=v[i];
                ne[poz]=dr[i]+1;
                poz++;
            }
        }
    }
    for(int i=1;i<n;i++)
        if(r[i]==-1)
            fout<<0<<'\n';
        else
            fout<<r[i]<<'\n';
}