제출 #1221865

#제출 시각아이디문제언어결과실행 시간메모리
1221865trideserCrossing (JOI21_crossing)C++20
26 / 100
7091 ms2212 KiB
#include <bits/stdc++.h> using namespace std; int main() { int size; cin >> size; string a; string b; string c; cin >> a; cin >> b; cin >> c; unordered_set<string> st; st.insert(a); st.insert(b); st.insert(c); queue<string> q; q.push(a); q.push(b); q.push(c); while(!q.empty()) { string s = q.front(); q.pop(); for(auto it = st.begin(); it != st.end(); it++) { string t = *it; string u = a; for(int i = 0; i < a.size(); i++) { if(s[i] == t[i]) u[i] = s[i]; else { if(s[i] != 'J' && t[i] != 'J') u[i] = 'J'; if(s[i] != 'O' && t[i] != 'O') u[i] = 'O'; if(s[i] != 'I' && t[i] != 'I') u[i] = 'I'; } } if(st.find(u) == st.end()) { st.insert(u); q.push(u); // cout << st.size() << '\n'; } } } int Q; cin >> Q; string query; cin >> query; if(st.find(query) == st.end()) { cout << "No\n"; } else { cout << "Yes\n"; } for(int i = 0; i < Q; i++) { int x, y; char z; cin >> x; cin >> y; cin >> z; for(int j = x - 1; j <= y - 1; j++) { query[j] = z; } cout << (st.find(query) == st.end() ? "No" : "Yes") << "\n"; } 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...