Submission #1211971

#TimeUsernameProblemLanguageResultExecution timeMemory
1211971stefanneaguGift Exchange (JOI24_ho_t4)C++20
10 / 100
26 ms3008 KiB
#include <bits/stdc++.h>

using namespace std;

const int nmax = 5e5 + 1;

struct str {
    int a, b;

    const bool operator < (str ult) const {
        return b < ult.b;
    }
};

bool qry(vector<str> v) {
    sort(v.begin() + 1, v.end());
    int n = v.size() - 1;
    vector<int> sp(n + 1, 0);
    for (int i = 1; i <= n; i++) {
        int l = i, r = n, ans = i;
        while (l <= r) {
            int mid = (l + r) / 2;
            if (v[mid].b <= v[i].a) {
                ans = mid;
                l = mid + 1;
            } else {
                r = mid - 1;
            }
        }
        sp[ans]++;
    }
    for (int i = n - 1; i >= 1; i--) {
        sp[i] += sp[i + 1];
    }
    for (int i = n; i >= 1; i--) {
        // deja folosite: n - i
        // all available: sp[i] - 1
        // deci sp[i] - (n - i) - 1
        // cout << i << ": " << sp[i] << '\n';
        if (sp[i] - (n - i) - (i == n) < 1) {
            return 0;
        }
    }
    return 1;
}

str v[nmax];

int32_t main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> v[i].a;
    }
    for (int i = 1; i <= n; i++) {
        cin >> v[i].b;
    }
    int q;
    cin >> q;
    while (q--) {
        int l, r;
        cin >> l >> r;
        vector<str> vt = {{0, 0}};
        for (int i = l; i <= r; i++) {
            vt.push_back(v[i]);
        }
        cout << (qry(vt) ? "Yes\n" : "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...