Cod sursa(job #2178796)

Utilizator flibiaVisanu Cristian flibia Data 19 martie 2018 18:36:46
Problema Curcubeu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#pragma GCC optimize("03")
#include <bits/stdc++.h>
#define N 1000100
#define ll long long 

using namespace std;

ifstream in("curcubeu.in");
ofstream out("curcubeu.out");

int n, a, b, c, L[N], R[N], C[N], sol[N], nxt[N], viz[N];

int update(int p){
	return (!viz[p] ? p : nxt[p] = update(nxt[p]));
}

int main(){
	in >> n >> a >> b >> c;
	for(int i = 1; i <= n; i++){
		if(i > 1){
			a = ((ll)a * (ll)i) % n;
			b = ((ll)b * (ll)i) % n;
			c = ((ll)c * (ll)i) % n;
		}
		L[i] = max(1, min(a, b));
		R[i] = max(a, b);
		C[i] = c;
		nxt[i] = i + 1;
	}
	for(int i = n - 1; i > 0; i--){
		for(int p = L[i]; p <= R[i]; p = nxt[p]){
			if(!viz[p]){
				sol[p] = C[i];
				viz[p] = 1;
			}
		}
		update(L[i]);
	}
	for(int i = 1; i < n; i++)
		out << sol[i] << '\n';
	return 0;
}