Submission #1159161

#TimeUsernameProblemLanguageResultExecution timeMemory
1159161brintonCrossing (JOI21_crossing)C++20
3 / 100
7093 ms3072 KiB
#include <bits/stdc++.h>
using namespace std;
string cross(string a,string b){
    int L = a.size();
    string ret(L,'.');
    for(int i = 0;i < L;i++){
        if(a[i] == b[i]){
            ret[i] = a[i];
            continue;
        }
        int J = false,O = false,I = false;
        if(a[i] == 'J' || b[i] == 'J')J = true;
        if(a[i] == 'O' || b[i] == 'O')O = true;
        if(a[i] == 'I' || b[i] == 'I')I = true;
        if(!J) ret[i] = 'J';
        if(!O) ret[i] = 'O';
        if(!I) ret[i] = 'I';
    }
    return ret;
}
int main(){
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    //start here
    int N;cin >> N;
    string a,b,c,ab,ac,bc,abc;
    cin >> a >> b >> c;
    ab = cross(a,b),ac = cross(a,c),bc = cross(b,c);
    abc = cross(a,bc);
    int Q;cin >> Q;
    auto chk = [&](string &Ti){
        return Ti == a || Ti == b || Ti == c || Ti == ab || Ti == bc || Ti == ac || Ti == abc;
    };
    string T;cin >> T;
    // cout << T << endl;
    cout << (chk(T)?"Yes\n":"No\n");
    while(Q--){
        int l,r;char c;
        cin >> l >> r >> c;
        l--;r--;
        for(int i = l;i <= r;i++){
            T[i] = c;
        }
        // cout << T << endl;
        cout << (chk(T)?"Yes\n":"No\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...