Submission #1275255

#TimeUsernameProblemLanguageResultExecution timeMemory
1275255danieldcvGym Badges (NOI22_gymbadges)C++20
100 / 100
139 ms16400 KiB
#include <bits/stdc++.h> using namespace std; #define int long long typedef long long ll; typedef vector<int> vi; typedef pair<int, int> pii; typedef vector<pii> vii; typedef set<int> si; typedef map<int, int> mii; #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define pb push_back #define ppb pop_back #define eb emplace_back #define mp make_pair #define rep(i, a, b) for(int i = a; i < b; i++) #define sz(x) (int)x.size() #define pc __builtin_popcountll #define msb(x) 31 - __builtin_clz(x) #define lsb(x) __builtin_ctz(x) const int INF = 1e9 + 1; const ll LLINF = 1e18 + 1; const int MOD = 1e9 + 7; // mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); /* */ void solve() { int n; cin >> n; vi x(n), l(n); for (int i = 0; i < n; i++) cin >> x[i]; for (int i = 0; i < n; i++) cin >> l[i]; vi id(n); iota(all(id), 0); auto cmp = [&] (int a, int b) { return x[a] + l[a] < x[b] + l[b]; }; sort(all(id), cmp); priority_queue<int> pq; int sum = 0; int ans = 0; for (int j = 0; j < n; j++) { int i = id[j]; if (sum <= l[i]) { sum += x[i]; pq.push(x[i]); ans++; } else if (x[i] < pq.top() && sum - pq.top() <= l[i]) { sum -= pq.top(); pq.pop(); sum += x[i]; pq.push(x[i]); } } cout << ans << '\n'; } signed main() { ios::sync_with_stdio(0); cin.tie(0); // int t; cin >> t; while (t--) solve(); 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...