Submission #1203863

#TimeUsernameProblemLanguageResultExecution timeMemory
1203863ofozGift Exchange (JOI24_ho_t4)C++20
10 / 100
2592 ms10944 KiB
#include <bits/stdc++.h> using namespace std; #define pi pair<int, int> #define vi vector<int> map<int, int> lnk; bool query(int l, int r, vi& a, vi& b) { vi B; int mn = INT32_MAX; set<int> A; for (int i = l; i <= r; i++) { B.push_back(b[i]); A.insert(a[i]); mn = min(mn, a[i]); } sort(B.rbegin(), B.rend()); for (int i = 0; i < B.size()-1; i++) { int x = B[i]; bool pres = A.count(lnk[x]); A.erase(lnk[x]); auto it = A.upper_bound(x); // cerr << x; if (it == A.end()) return false; // cerr << ' ' << *it << endl; A.erase(it); if (pres) A.insert(lnk[x]); } if (A.count(mn) && lnk[B.back()] == mn) return false; return true; } // 12 14 16 17 // 11 13 9 3 void solve() { int n; cin >> n; vector<int> a(n), b(n); for (int &x : a) cin >> x; for (int &x : b) cin >> x; for (int i = 0; i < n; i++) { lnk[b[i]] = a[i]; // cerr << b[i] << ' ' << link[b[i]] << endl; } int q; cin >> q; while (q--) { int l, r; cin >> l >> r; l--; r--; bool res = query(l, r, a, b); cout << (res ? "Yes" : "No") << '\n'; } } /* when is a segment not gift exchangable? */ int main() { solve(); 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...