Submission #600369

#TimeUsernameProblemLanguageResultExecution timeMemory
600369PlurmCrossing (JOI21_crossing)C++11
26 / 100
7037 ms6032 KiB
#include <bits/stdc++.h> using namespace std; string sa, sb, sc; string cross(string x, string y){ if(x.empty()) return y; else if(y.empty()) return x; int n = x.size(); string ret; for(int i = 0; i < n; i++){ if(x[i] == y[i]) ret.push_back(x[i]); else ret.push_back(x[i] ^ y[i] ^ 'J' ^ 'O' ^ 'I'); } return ret; } set<string> rec(int left, string cur = ""){ if(left == 0) return {cur}; set<string> s = {cur}, t; t = rec(left-1, cross(cur, sa)); s.insert(t.begin(), t.end()); t = rec(left-1, cross(cur, sb)); s.insert(t.begin(), t.end()); t = rec(left-1, cross(cur, sc)); s.insert(t.begin(), t.end()); return s; } int main(){ ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n >> sa >> sb >> sc; set<string> pool = rec(4); int q; cin >> q; string t; cin >> t; cout << (pool.count(t) ? "Yes" : "No") << endl; while(q--){ int l, r; char c; cin >> l >> r >> c; for(int i = l; i <= r; i++){ t[i-1] = c; } cout << (pool.count(t) ? "Yes" : "No") << endl; } 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...