Submission #1261492

#TimeUsernameProblemLanguageResultExecution timeMemory
1261492avighnaFestival (IOI25_festival)C++20
5 / 100
42 ms8008 KiB
#include <bits/stdc++.h> struct item { int64_t i, p, t; }; std::vector<int> max_coupons(int A, std::vector<int> P, std::vector<int> T) { const int n = P.size(); std::vector<item> a(n); for (int i = 0; i < n; ++i) { a[i] = {i, P[i], T[i]}; } std::sort(a.begin(), a.end(), [&](item i, item j) { if (i.t != j.t) { return i.t > j.t; } return i.p < j.p; }); int _n = n; for (int i = 0; i < n; ++i) { if (a[i].t == 1) { _n = i; break; } } const int lg = 30; std::vector<int> ans; // i = number of things chosen from left for (int i = 0; i <= std::min(_n, lg); ++i) { int64_t cur = A; std::vector<int> cur_ans; bool good = true; for (int j = 0; j < i; ++j) { if (cur < a[j].p) { good = false; break; } cur_ans.push_back(a[i].i); cur = (cur - a[j].p) * a[j].t; } if (!good) { break; } for (int j = _n; j < n; ++j) { if (cur - a[j].p < 0) { break; } cur_ans.push_back(a[j].i); cur = (cur - a[j].p) * a[j].t; } if (cur_ans.size() > ans.size()) { ans = cur_ans; } } 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...