Submission #1279970

#TimeUsernameProblemLanguageResultExecution timeMemory
1279970GoBananas69나일강 (IOI24_nile)C++20
0 / 100
2095 ms4908 KiB
#include <algorithm> #include <cmath> #include <iostream> #include <vector> typedef long long ll; using namespace std; ll solve(vector<pair<ll, ll>> &items, vector<ll> &w, ll d) { ll n = items.size(); vector<bool> ok(n, false); ll res = 0; for (int i = 0; i < n; ++i) { int l = i + 1; int r = upper_bound(w.begin(), w.end(), w[i] + d) - w.begin() - 1; bool found = false; ll mx = 0, idx = i; for (int j = l; j <= r; ++j) { if (ok[j]) continue; found = true; if (items[j].second > mx) { mx = items[j].second; idx = j; } } if (!found) { res += items[i].second; ok[i] = true; } else { ok[i] = true; ok[idx] = true; } } return res; } vector<ll> calculate_costs(vector<int> W, vector<int> a, vector<int> b, vector<int> e) { ll n = a.size(); ll q = e.size(); vector<ll> ans(q), w(n); vector<pair<ll, ll>> items(n); ll sum = 0; for (ll i = 0; i < n; ++i) { items[i] = {(ll)W[i], (ll)(a[i] - b[i])}; sum += b[i]; } sort(items.begin(), items.end()); for (ll i = 0; i < n; ++i) { w[i] = items[i].first; } for (int i = 0; i < q; ++i) ans[i] = sum + solve(items, w, e[i]); return ans; }
#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...