Submission #1142782

#TimeUsernameProblemLanguageResultExecution timeMemory
1142782LucaLucaMCrossing (JOI21_crossing)C++20
0 / 100
171 ms716 KiB
#include <iostream> #include <vector> #include <algorithm> #include <cassert> #include <cstring> #include <set> std::set<std::string> st; std::string join(std::string a, std::string b) { std::string ret; for (int i = 0; i < (int) a.size(); i++) { if (a[i] == b[i]) { ret += a[i]; } else { ret += 'J' ^ 'O' ^ 'I' ^ a[i] ^ b[i]; } } return ret; } void go(std::string s) { if (st.count(s)) { return; } st.insert(s); for (const auto &str : st) { go(join(s, str)); } } void get(std::string s) { for (const auto &str : st) { bool ok = true; for (int i = 0; i < (int) s.size(); i++) { if (s[i] != str[i]) { ok = false; break; } } if (ok) { std::cout << "YES\n"; return; } } std::cout << "NO\n"; } int main() { #ifdef LOCAL freopen("input.txt", "r", stdin); #endif int n; std::cin >> n; std::string a, b, c; std::cin >> a >> b >> c; st.insert(a); int q; std::cin >> q; std::string str; std::cin >> str; get(str); for (int i = 1; i <= q; i++) { int l, r; char c; std::cin >> l >> r >> c; l--, r--; for (int j = l; j <= r; j++) { str[j] = c; } get(str); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...