제출 #1288075

#제출 시각아이디문제언어결과실행 시간메모리
1288075ofozGym Badges (NOI22_gymbadges)C++20
100 / 100
146 ms28452 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O2") using namespace std; #define int long long #define ll long long #define vc vector<char> #define vi vector<int> #define vb vector<bool> #define pi pair<int, int> #define ppi pair<pair<int, int>, int> #define pip pair<int, pair<int, int>> #define multi multiset<int> #define multp multiset<pi> #define endl '\n' mt19937 rng(chrono::system_clock::now().time_since_epoch().count()); const int MOD = 1e9 + 7; const int MAXN = 2e5+5; const int S = 350; void solve() { int n; cin >> n; vi X(n), L(n); for (int &x : X) cin >> x; for (int &x : L) cin >> x; vector<pi> arr; for (int i = 0; i < n; i++) { arr.push_back({X[i], L[i]}); } sort(arr.begin(), arr.end(), [](pi p1, pi p2) { return (p1.first + p1.second) < (p2.first + p2.second); }); int res = 0, sum = 0; priority_queue<pi> pq; for (int i = 0; i < n; i++) { int x, l; tie(x, l) = arr[i]; if (sum <= l) { res++; sum += x; pq.push({x, i}); continue; } pi p = pq.top(); if (p.first <= x) continue; sum -= p.first; pq.pop(); sum += x; pq.push({x, i}); } cout << res << endl; } /* */ signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); bool test = 0; int t; if (!test) t = 1; else cin >> t; while (t--) { 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...