Cod sursa(job #419797)

Utilizator lalasCont de teste lalas Data 17 martie 2010 23:49:45
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn = 1000005;
int i , j , k , right[maxn] , col[maxn] , pr[maxn] , cl;
int n , A , B, C , lf , rt , last;

void print (int lf , int cl) {
	
	for( i = lf ; i <= right[lf] ; ++i ) {
		if ( pr[i] > pr[lf]) print( i , col[i]);
		printf("%d\n",cl);
	}
	--i;
}
		
int main()
{
	freopen("curcubeu.in","r",stdin);
	freopen("curcubeu.out","w",stdout);
	
	scanf("%d %d %d %d",&n,&A,&B,&C);
	
	right[min(A,B)] = max(A,B) , col[min(A,B)] = C , pr[min(A,B)] = 1;
	
	for ( i = 2 ; i < n ; ++i ) {
		A = ( A * i ) % n , B = ( B * i ) % n  , C = ( C * i ) % n ;
		lf = min ( A , B ) , rt = max ( A , B );
		right[lf] = rt;
		col[lf] = C;
		pr[lf] = i;
	}
	if ( right[1] == 0 ) right[1] = n - 1;
	
	for (i = 1 ; i < n  ;++i )
	print(i , col[i]);
	
return 0;
}