Cod sursa(job #252986)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 5 februarie 2009 11:27:27
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>
#define LL (long long)
#define maxN 1000005
struct st{int a,b,c;}v[maxN];
int N,i,ax,poza,pozb,f[maxN],c[maxN];

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);
  for (i=2;i<N;++i){
		 v[i].a=LL v[i-1].a*i%N;
		 v[i].b=LL v[i-1].b*i%N;
		 v[i].c=LL v[i-1].c*i%N;
		 if (v[i].a>v[i].b){ax=v[i].a;v[i].a=v[i].b;v[i].b=ax;}
	}
	for (i=0;i<N;++i)f[i]=i+1;
	for (i=N-1;i>0;--i){
		 poza=v[i].a;pozb=v[i].b;
		 while (poza <= pozb){
				if (!c[poza])c[poza]=v[i].c;
				ax=poza;
				poza=f[poza];
				if (pozb > f[ax])f[ax]=pozb;
		 }
	}
	for (i=1;i<N;++i)printf("%d\n",c[i]);
return 0;
}