제출 #1211971

#제출 시각아이디문제언어결과실행 시간메모리
1211971stefanneaguGift Exchange (JOI24_ho_t4)C++20
10 / 100
26 ms3008 KiB
#include <bits/stdc++.h> using namespace std; const int nmax = 5e5 + 1; struct str { int a, b; const bool operator < (str ult) const { return b < ult.b; } }; bool qry(vector<str> v) { sort(v.begin() + 1, v.end()); int n = v.size() - 1; vector<int> sp(n + 1, 0); for (int i = 1; i <= n; i++) { int l = i, r = n, ans = i; while (l <= r) { int mid = (l + r) / 2; if (v[mid].b <= v[i].a) { ans = mid; l = mid + 1; } else { r = mid - 1; } } sp[ans]++; } for (int i = n - 1; i >= 1; i--) { sp[i] += sp[i + 1]; } for (int i = n; i >= 1; i--) { // deja folosite: n - i // all available: sp[i] - 1 // deci sp[i] - (n - i) - 1 // cout << i << ": " << sp[i] << '\n'; if (sp[i] - (n - i) - (i == n) < 1) { return 0; } } return 1; } str v[nmax]; int32_t main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n; cin >> n; for (int i = 1; i <= n; i++) { cin >> v[i].a; } for (int i = 1; i <= n; i++) { cin >> v[i].b; } int q; cin >> q; while (q--) { int l, r; cin >> l >> r; vector<str> vt = {{0, 0}}; for (int i = l; i <= r; i++) { vt.push_back(v[i]); } cout << (qry(vt) ? "Yes\n" : "No\n"); } 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...