Submission #1245452

#TimeUsernameProblemLanguageResultExecution timeMemory
1245452RecursiveCoGift Exchange (JOI24_ho_t4)C++20
50 / 100
2592 ms5624 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define in(i) cin >> i
#define out(o) cout << o

// vector<int>

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int N;
    in(N);
    vector<int> A(N);
    vector<int> B(N);
    for (int i = 0; i < N; ++i) in(A[i]);
    for (int i = 0; i < N; ++i) in(B[i]);
    int Q;
    in(Q);
    for (int i = 0; i < Q; ++i) {
        int l, r;
        in(l);
        in(r);
        --l;
        --r;
        vector<pair<int, int>> sorted;
        for (int j = l; j <= r; ++j) sorted.push_back({A[j], B[j]});
        sort(sorted.begin(), sorted.end());
        int s = sorted.size();
        bool can = true;
        int minB = 3 * N;
        for (int j = s - 1; j >= 0; --j) {
            bool satisfied = false;
            int a = sorted[j].first;
            int b = sorted[j].second;
            if (j != s - 1 && a >= minB) satisfied = true;
            minB = min(minB, b);
            if (j && sorted[j - 1].first >= minB) satisfied = true;
            if (!satisfied) can = false;
        }
        if (can) out("Yes");
        else out("No");
        out("\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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...