제출 #1304788

#제출 시각아이디문제언어결과실행 시간메모리
1304788the_ZHERCrossing (JOI21_crossing)C++20
3 / 100
762 ms1114112 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define pb push_back
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int N=2e5+10;
const int inf=1e18;
const int mod=1e9+7;
struct edge{
    int x,y,w;
};
string f(string a,string b){
    string res="";
    for(int i=0;i<a.size();i++){
        if(a[i]==b[i]){
            res+=a[i];
        }else{
            int ok=0,ok1=0,ok2=0;
            if(a[i]=='J'||b[i]=='J'){
                ok=1;
            }
            if(a[i]=='O'||b[i]=='O'){
                ok1=1;
            }
            if(a[i]=='I'||b[i]=='I'){
                ok2=1;
            }
            if(ok==0){
                res+='J';
            }
            if(ok1==0){
                res+='O';
            }
            if(ok2==0){
                res+='I';
            }
        }
    }
    return res;
}
set<string>st;
map<string,int>mp;
set<string>st1;
vector<string>v;
vector<string>v1;
signed main() {
    ios_base::sync_with_stdio(NULL);
    cin.tie(nullptr);
    int n;
    cin>>n;
    string s,s1,s2;
    cin>>s>>s1>>s2;
    int q;
    cin>>q;
    string t;
    cin>>t;
    v.push_back(s);
    v.push_back(s1);
    v.push_back(s2);
    mp[s]=1;
    mp[s1]=1;
    mp[s2]=1;
    for(int i=0;i<v.size();i++){
        for(int j=0;j<v.size();j++){
            if(v[i]==v[j]){
                continue;
            }
            string e=f(v[i],v[j]);
            if(mp[e]==0){
                mp[e]=1;
                v.push_back(e);
            }
        }
    }
    if(mp[t]==1){
        cout<<"Yes\n";
    }else{
        cout<<"No\n";
    }
    for(int i=1;i<=q;i++){
        int l,r;
        char c;
        cin>>l>>r>>c;
        for(int j=l-1;j<r;j++){
            t[j]=c;
        }
        if(mp[t]==1){
            cout<<"Yes\n";
        }else{
            cout<<"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...