제출 #1226238

#제출 시각아이디문제언어결과실행 시간메모리
1226238banganCrossing (JOI21_crossing)C++20
26 / 100
7091 ms2512 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define int long long

#define chmin(a, b) a = min(a, b)
#define chmax(a, b) a = max(a, b)

#define FOR1(a) for (int _ = 1; _ <= (a); _++)
#define FOR2(i, a) for (int i = 1; i <= (a); i++)
#define FOR3(i, a, b) for (int i = (a); i <= (b); i++)
#define overload3(a, b, c, d, ...) d
#define FOR(...) overload3(__VA_ARGS__, FOR3, FOR2, FOR1)(__VA_ARGS__)

#define sep ' '
#define endl '\n'
#define print(a) cerr << #a << " = " << a << endl;

#define X first
#define Y second
#define MP make_pair
#define MT make_tuple
#define pii pair<int, int>

#define pb push_back
#define eb emplace_back
#define ALL(a) a.begin(), a.end()
#define UNIQUE(a) sort(ALL(a)); a.resize(unique(ALL(a)) - a.begin());

#define LC (v << 1)
#define RC (LC | 1)
#define mid ((l+r) / 2)

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

int n;
string a, b, c;

string merge(string x, string y) {
    string ret;
    for (int i=0; i<n; i++) {
        if (x[i]==y[i]) ret.pb(x[i]);
        else            ret.pb(char(x[i] ^ y[i] ^ 'I' ^ 'J' ^ 'O'));
    }
    return ret;
}

void SOLVE() {
    cin >> n;
    cin >> a >> b >> c;
    vector<string> all{a, b, c};
    UNIQUE(all);
    while (true) {
        int old_sz = all.size();
        vector<string> res;
        for (int i=0; i < all.size(); i++) for (int j = i+1; j < all.size(); j++) {
            res.pb(merge(all[i], all[j]));
        }
        for (auto x : res) all.pb(x);
        UNIQUE(all);
        if (all.size() == old_sz) break;
    }
    set<string> can;
    for (auto x : all) can.insert(x);
    assert(all.size() <= 9);
    int q;
    cin >> q;
    string t; cin >> t;
    if (can.contains(t)) cout << "Yes\n";
    else cout << "No\n";
    while (q--) {
        int l, r;
        char x;
        cin >> l >> r >> x;
        l--; r--;
        for (int i=l; i<=r; i++) t[i] = x;
        cout << (can.contains(t) ? "Yes" : "No") << endl;
    }
}

int32_t main() {
    ios::sync_with_stdio(false); cin.tie(nullptr);
    int T = 1;
    // cin >> T;
    FOR(T) SOLVE();
}   
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...