Cod sursa(job #898046)

Utilizator Claudiu95Vartolomei Alexandru Claudiu Claudiu95 Data 28 februarie 2013 00:02:44
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<cstdio>
#define maxn 1000000
#include<iostream>
using namespace std;
int nre,a,b,c,n,i,j,cul[maxn],nrv=0,t[maxn];
 
struct muchie{
     int x1,x2,c;
};
muchie v[maxn];
int main(){
    freopen("curcubeu.in","r",stdin);
    freopen("curcubeu.out","w",stdout);
    scanf("%d %d %d %d",&n,&a,&b,&c);
    nre=1;
    v[nre].x1=min(a,b);
    v[nre].x2=max(a,b);
    v[nre].c=c;
    cul[1]=-1;
    for(unsigned int i=2;i<n;++i){
        a=(a%n*i%n)%n;
        b=(b%n*i%n)%n;
        c=(c%n*i%n)%n;
        cul[i]=-1;
        ++nre;
        v[nre].x1=min(a,b);
        v[nre].x2=max(a,b);
        v[nre].c=c;
    }
    while(nrv!=n-1){
        for(unsigned int i=v[nre].x1;i<=v[nre].x2;++i)
            if(cul[i]==-1){
				cul[i]=v[nre].c;
				++nrv;
				t[i]=v[nre].x2+1;
				++i;
			}
			else
				i=t[i];
			--nre;
    }
    for(unsigned  int i=1;i<n;++i)
        printf("%d\n",cul[i]);
     
    return 0;
}