Cod sursa(job #2494506)

Utilizator HumikoPostu Alexandru Humiko Data 17 noiembrie 2019 22:57:17
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <algorithm>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <cstring>

using namespace std;

//#include <iostream>
#include <fstream>

//ifstream cin ("input.in");
//ofstream cout ("output.out");

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

struct interval {
	int lft, rght, val;
};

static const int NMAX = 1e7+5;

int colour[NMAX];
int nxt[NMAX];

interval v[NMAX];

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);

	int n, A, B, C;
	cin>>n>>A>>B>>C;

	v[1] = {min(A, B), max(A, B), C};

	for ( int i = 2; i < n; ++i ) {
		A = (1LL*A*i)%n;
		B = (1LL*B*i)%n;
		C = (1LL*C*i)%n;

		v[i] = {min(A, B), max(A, B), C};
	}

	for ( int i = n-1; i >= 1; --i ) {
		for ( int j = v[i].lft; j <= v[i].rght; ) {
			if ( !nxt[j] ) {
				colour[j] = v[i].val;
				nxt[j] = v[i].rght+1;
				j++;
			}
			else {
				j = nxt[j];
			}
		}
	}

	for ( int i = 1; i < n; ++i ) {
		cout<<colour[i]<<'\n';
	}
}