Submission #1169458

#TimeUsernameProblemLanguageResultExecution timeMemory
1169458fzyzzz_zCrossing (JOI21_crossing)C++20
26 / 100
7091 ms2708 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

char get(char a, char b) {
	if (a == b) return a; 
	return a ^ b ^ '0' ^ '1' ^ '2'; 
}
string get(string a, string b) {
	string res = ""; 
	for (int i = 0; i < a.size(); ++i) {
		res += get(a[i], b[i]); 
	}
	return res; 
}

string read() {
	string s; 
	cin >> s; 
	for (auto & x: s) {
		if (x == 'J') x = '0'; 
		else if (x == 'O') x = '1'; 
		else x = '2';
	} 
	return s; 
}

void solve() {
	int n; 
	cin >> n; 
	vector<string> s(3); 
	for (auto & x: s) {
		x = read(); 
	}
	for (int i = 0; i < 3; ++i) {
		s.push_back(get(s[i], s[(i + 1) % 3]));
	}

	for (int i = 0; i < 3; ++i) {
		s.push_back(get(s[3 + i], s[3 + (i + 1) % 3]));
	}

	sort(s.begin(), s.end()); 
	s.erase(unique(s.begin(), s.end()), s.end()); 

	for (auto x: s) {
		// cout << x << '\n'; 
	}

	int q; 
	cin >> q; 
	string t = read(); 

	auto can_get = [&] (string z) {
		for (auto x: s) {
			if (x == z) {
				return "Yes"; 
			}
		}
		return "No"; 
	};

	cout << can_get(t) << '\n';

	while (q--) {
		int l, r; 
		string s; 
		cin >> l >> r; 
		s = read(); 
		for (int i = l - 1; i <= r - 1; ++i) {
			t[i] = s[0]; 
		}
		cout << can_get(t) << '\n'; 
	}

}

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

	solve(); 
	// vector<string> v; 

	// const int N = 20; 
	// for (int i = 0; i < 3; ++i) {
	// 	string s = ""; 
	// 	for (int j = 0; j < N; ++j) {
	// 		s += '0' + (rand() % 3); 
	// 	}
	// 	v.push_back(s); 
	// }

	// cout << v[0] << ' ' << v[1] << ' ' << v[2] << '\n';
	// int T = 3000; 
	// for (int t = 0; t < T; ++t) {
	// 	int a = rand() % v.size(); 
	// 	int b = rand() % v.size(); 

	// 	string ss = get(v[a], v[b]); 
	// 	v.push_back(ss); 
	// 	sort(v.begin(), v.end()); 
	// 	v.erase(unique(v.begin(), v.end()), v.end()); 
	// }
	// cout << v.size() << '\n'; 
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...