Submission #1166622

#TimeUsernameProblemLanguageResultExecution timeMemory
1166622thinknoexitGift Exchange (JOI24_ho_t4)C++20
50 / 100
2592 ms4904 KiB
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 500500;
int a[N], b[N];
int n;
int main() {
    cin.tie(nullptr)->sync_with_stdio(false);
    cin >> n;
    for (int i = 1;i <= n;i++) cin >> a[i];
    for (int i = 1;i <= n;i++) cin >> b[i];
    int q;
    cin >> q;
    while (q--) {
        vector<pair<int, int>> v;
        int l, r;
        cin >> l >> r;
        for (int i = l;i <= r;i++) {
            v.push_back({ b[i], 1 });
            v.push_back({ a[i], -1 });
        }
        sort(v.begin(), v.end());
        bool ch = 1;
        stack<int> st;
        for (auto& [x, w] : v) {
            if (w == 1) st.push(0);
            else {
                int val = st.top();
                st.pop();
                if (val == 0 && st.empty()) {
                    ch = 0;
                    break;
                }
                if (!st.empty()) {
                    st.pop();
                    st.push(1);
                }
            }
        }
        if (ch) cout << "Yes\n";
        else cout << "No\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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...