Cod sursa(job #1133101)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 4 martie 2014 13:52:26
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<cstdio>
struct cul{
    int a;
    int b;
    int c;
}x[1001000];
int n,a,b,c,i,j,v[1001000],y[1001000];
FILE *f,*g;
int maxim(int a,int b){
    if(a>b)
        return a;
    return b;
}
int main(){
    f=fopen("curcubeu.in","r");
    g=fopen("curcubeu.out","w");
    fscanf(f,"%d%d%d%d",&n,&a,&b,&c);
    x[1].a=a;
    x[1].b=b;
    x[1].c=c;
    for(i=2;i<n;i++){
        a=(1LL*a*i)%n;
        b=(1LL*b*i)%n;
        c=(1LL*c*i)%n;
        if(a<b){
            x[i].a=a;
            x[i].b=b;
        }
        else{
            x[i].a=b;
            x[i].b=a;
        }
        x[i].c=c;
    }
    for(i=n-1;i>=1;i--){
        for(j=x[i].a;j<=x[i].b;j++){
            if(v[j]==0){
                v[j]=x[i].c;
                y[j]=x[i].b+1;
            }
            else{
                while(v[j]!=0){
                    j=y[j];
                }
                y[j]=maxim(j,x[i].b+1);
                j--;
            }
        }
    }
    for(i=1;i<n;i++){
        fprintf(g,"%d\n",v[i]);
    }
    fclose(f);
    fclose(g);
    return 0;
}