Cod sursa(job #1479622)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 31 august 2015 19:12:39
Problema Curcubeu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>
#define NMAX 1000023
int n;
int arr[NMAX],poz[NMAX];
struct str
{
    int a;
    int b;
    int c;
}v[NMAX];
void update(int st,int dr,int cul)
{
    if(st>dr)
    {
        int temp=st;
        st=dr;
        dr=temp;
    }
    for(int i=st;i<=dr;)
    {
       // printf("%d\n",arr[i]);
        while(arr[i]!=0&&i<=dr)
        {
            i=poz[i]+1;
        }
        if(i>dr) break;
        arr[i]=cul;
    }
    poz[st]=dr;
}
int formula(int nr,int i)
{
    return (nr*i)%n;
}
int main()
{
    freopen ("curcubeu.in","r",stdin);
    freopen ("curcubeu.out","w",stdout);
    scanf("%d%d%d%d",&n,&v[1].a,&v[1].b,&v[1].c);
    poz[1]=1;
    for(int i=2;i<n;i++)
    {
        poz[i]=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;
    }
    for(int i=n-1;i>=1;i--)
    {
        update(v[i].a,v[i].b,v[i].c);
    }
    for(int i=1;i<n;i++) printf("%d\n",arr[i]);
}