Submission #1200456

#TimeUsernameProblemLanguageResultExecution timeMemory
1200456AblablaGift Exchange (JOI24_ho_t4)C++20
50 / 100
2595 ms2908 KiB
#include <bits/stdc++.h>
using namespace std;

typedef pair<int, int> pii;

vector<pii> a, b;

bool csere(int ind){
    if(ind < 0 || a.size() <= ind + 1){
        return 0;
    }

    // volt:
    // a[ind] -> b[ind]
    // a[ind + 1] -> b[ind + 1]

    // lesz:
    // a[ind + 1] -> b[ind]
    // a[ind] -> b[ind + 1]

    if(a[ind] >= b[ind + 1] && a[ind + 1] >= b[ind]){
        swap(a[ind], a[ind + 1]);
        return 1;
    }

    return 0;
}

int main() {
	int n;
    cin >> n;

    vector<int> ad(n), ker(n);
    for(int &x : ad){
        cin >> x;
    }
    for(int &x : ker){
        cin >> x;
    }

    int q;
    cin >> q;

    while(q--){
        int l, r;
        cin >> l >> r;
        l--; r--;

        a.clear();
        b.clear();

        for(int i = l; i <= r; i++){
            a.push_back({ad[i], i});
            b.push_back({ker[i], i});
        }

        sort(a.begin(), a.end(), greater<pii>());
        sort(b.begin(), b.end(), greater<pii>());

        /*for(int i = 0; i < a.size(); i++){
            cout << a[i].first << " " << a[i].second << " : " << b[i].first << " " << b[i].second << "\n";
        }*/

        bool jo = 1;
        for(int i = 0; i < a.size(); i++){
            if(a[i].second == b[i].second){
                if(!csere(i - 1)){
                    if(!csere(i)){
                        jo = 0;
                        break;
                    }
                }
            }
        }

        if(jo){
            cout << "Yes\n";
        } else{
            cout << "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...