Submission #1132536

#TimeUsernameProblemLanguageResultExecution timeMemory
1132536antonnGift Exchange (JOI24_ho_t4)C++20
50 / 100
2593 ms4208 KiB
#include <bits/stdc++.h>

#define F first
#define S second

using namespace std;
using ll = long long;
using pi = pair<int, int>;
using vi = vector<int>;

template<class T> bool ckmin(T& a, T b) { return b < a ? a = b, true : false; }
template<class T> bool ckmax(T& a, T b) { return a < b ? a = b, true : false; }

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    
    int n; cin >> n;
    vector<int> a(n + 1), b(n + 1);
    for (int i = 1; i <= n; ++i) cin >> a[i];
    for (int i = 1; i <= n; ++i) cin >> b[i];
    
    vector<int> sol(n + 1);
    
    int q; cin >> q;
    while (q--) {
        int l, r; cin >> l >> r;
        vector<pair<int, int>> va, vb;
        for (int i = l; i <= r; ++i) va.push_back({a[i], i});
        for (int i = l; i <= r; ++i) vb.push_back({b[i], i});
        sort(va.rbegin(), va.rend());
        sort(vb.rbegin(), vb.rend());

        for (int i = 0; i+1 < va.size(); ++i) if (va[i].second == vb[i].second || va[i].first < vb[i].first) swap(va[i], va[i + 1]);
        
        if (va.back().second == vb.back().second || va.back().first < vb.back().first) {        
            for (int i = 0; i+1 < va.size(); ++i) {
                if (va[i].first >= vb.back().first && va.back().first >= vb[i].first && va[i].second != vb.back().second && va.back().second != vb[i].second) {
                    swap(va[i], va.back());
                    break;
                }
            }
        }

        bool ok = 1;
        for (int i = 0; i < va.size(); ++i) ok &= va[i].second != vb[i].second;
        for (int i = 0; i < va.size(); ++i) ok &= va[i].first >= vb[i].first;
        
        cout << (ok ? "Yes" : "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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...