Submission #1213770

#TimeUsernameProblemLanguageResultExecution timeMemory
1213770mdn2002Gift Exchange (JOI24_ho_t4)C++20
9 / 100
2593 ms1860 KiB
/*
Mayoeba Yabureru
*/
#pragma GCC optimize("O3,unroll-loops")
#include <bits/stdc++.h>
using namespace std;

void solve() {
  int n;
  cin >> n;

  vector a(n, 0), b = a, left(n, -1), right(n, n);
  for (int i = 0; i < n; i ++) cin >> a[i];
  for (int i = 0; i < n; i ++) cin >> b[i];

  for (int i = 0; i < n; i ++) {
    for (int j = 0; j < n; j ++) {
      if (i == j) continue;
      if (b[j] < b[i] && a[j] > b[i]) {
        if (j < i) left[i] = max(left[i], j);
        else right[i] = min(right[i], j);
      }
      if (b[i] < b[j] && a[i] > b[j]) {
        if (j < i) left[i] = max(left[i], j);
        else right[i] = min(right[i], j);
      }
    }
  }

  int q;
  cin >> q;

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

    for (int i = l; i <= r; i ++) {
        if (left[i] < l && r < right[i]) can = 0;
    }
    if (can) cout << "Yes" << endl;
    else cout << "No" << endl;
  }
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  int T = 1;
  for (int I = 1; I <= T; I++) {
    solve();
  }
}
#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...