제출 #1132473

#제출 시각아이디문제언어결과실행 시간메모리
1132473antonnGift Exchange (JOI24_ho_t4)C++20
14 / 100
2593 ms6976 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>> 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 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...