Submission #1228884

#TimeUsernameProblemLanguageResultExecution timeMemory
1228884sleepntsheepHandcrafted Gift (IOI20_gift)C++20
100 / 100
901 ms38584 KiB
#include "gift.h"
#include <set>

using namespace std;

int construct(int n, int r, std::vector<int> a, std::vector<int> b, std::vector<int> x) {
	string ans(n, 'R');
	vector<int> a_(n);

	set<int> s;
	for (int i = 0; i < n; ++i)
		s.insert(i);

	for (int i = 0; i < r; ++i)
		if (x[i] == 1) {
			auto it = s.lower_bound(a[i]);
			if (it == s.end() || *it > a[i])
				--it;
			auto itr = s.upper_bound(b[i]);

			s.erase(next(it), itr);
		}

	for (int i = 0; i < r; ++i)
		if (x[i] == 2) {
			auto it = s.lower_bound(a[i]);
			if (it == s.end() || *it > a[i]) --it;
			auto it2 = s.lower_bound(b[i]);
			if (it2 == s.end() || *it2 > b[i])
				--it2;
			if (it == it2) {
				return 0;
			}
		}


	for (auto x : s) a_[x] ^= 1;
	for (int i = 0, run = 0; i < n; ++i) {
		run ^= a_[i];
		ans[i] = run ? 'R' : 'B';
	}

	craft(ans);
	return 1;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...