Cod sursa(job #715215)

Utilizator GrimpowRadu Andrei Grimpow Data 16 martie 2012 20:57:38
Problema Curcubeu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
#define Nmax 1000000+2
#define LL long long
using namespace std;

int A[Nmax],B[Nmax],C[Nmax],Urm[Nmax],Cul[Nmax];
int N;

int main(){
	int i,j,jj,aux,lcul;
	ifstream f("curcubeu.in");
	ofstream g("curcubeu.out");
	f>>N>>A[1]>>B[1]>>C[1];
	Urm[1]=1;
	for(i=2;i<N;++i){
		A[i]=((LL)A[i-1]*i)%N;
		B[i]=((LL)B[i-1]*i)%N;
		if( A[i] > B[i] ) aux=A[i],A[i]=B[i],B[i]=aux;
		C[i]=((LL)C[i-1]*i)%N;
		Urm[i]=i;
	}

	for(i=N-1;i>=1;--i){
		lcul=B[i]+1;
		while( Urm[lcul]>lcul ) lcul=Urm[lcul];

		for(j=A[i]; j<=B[i]; ++j ){
			while( Urm[j]>j )j=Urm[j];
			if( j>B[i] ) break;

			Cul[j]=C[i];
			Urm[j]=lcul;
		}
	}

	for(i=1;i<N;++i) g<<Cul[i]<<'\n';
    f.close();
    g.close();
    return 0;
}