Cod sursa(job #1026436)

Utilizator harababurelPuscas Sergiu harababurel Data 11 noiembrie 2013 17:05:54
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
#define nmax 1000005
using namespace std;

bool used[nmax];
int v[nmax], urm[nmax];
int n, A[nmax], B[nmax], C[nmax], L, R, color;

int main() {
	ifstream f("curcubeu.in");
	//ofstream g("curcubeu.out");
	freopen("curcubeu.out","w",stdout);

	f>>n;
	f>>A[1]>>B[1]>>C[1];
	for(int i=2; i<n; i++) {
		A[i] = (A[i-1] * i) % n;
		B[i] = (B[i-1] * i) % n;
		C[i] = (C[i-1] * i) % n;
	}
	//for(int i=1; i<n; i++) cout<<min(A[i], B[i])<<" "<<max(A[i], B[i])<<" "<<C[i]<<"\n"; cout<<"\n";

	for(int i=1; i<n; i++) urm[i] = i;
	for(int t=n-1; t>=1; t--) {
		L = min(A[t], B[t]);
		R = max(A[t], B[t]);
		color = C[t];

		for(int i=L; i<=R; ) {
			if(used[i]) i = urm[i];
			else {
				used[i] = true;
				v[i] = color;
				urm[i] = R+1;
				i++;
			}
		}
				
		//for(int i=1; i<n; i++) cout<<v[i]<<" "; cout<<"\n";

	}
	for(int i=1; i<n; i++)  printf("%d\n", v[i]);

	return 0;
}