#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>> v;
set<pair<int, int>> s;
for (int i = l; i <= r; ++i) v.push_back({a[i], i});
for (int i = l; i <= r; ++i) s.insert({b[i], i});
sort(v.begin(), v.end());
int cnt = 0;
bool ok = 1;
int who1 = -1, who2 = -1;
for (auto [x, i] : v) {
bool still = 0;
if (s.count({b[i], i})) still = 1, s.erase({b[i], i});
auto it = s.lower_bound({x + 1, 0});
if (it == s.begin()) {
cnt++;
if (cnt == 3) {
ok = false;
break;
}
if (who1 != -1) who2 = i;
if (who1 == -1) who1 = i;
sol[i] = a[i];
continue;
}
sol[prev(it)->second] = x;
s.erase(prev(it));
if (still == 1) s.insert({b[i], i});
}
if (cnt == 2) {
ok = 0;
if (sol[who1] >= b[who2] && sol[who2] >= b[who1]) ok = 1;
}
if (cnt == 1) {
ok = 0;
for (int i = l; i <= r; ++i) {
if (i != who1 && sol[i] >= b[who1] && sol[who1] >= b[i]) ok = 1;
}
}
cout << (ok ? "Yes" : "No") << "\n";
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |