#include <bits/stdc++.h>
using namespace std;
vector<int> max_coupons(int A, vector<int> P, vector<int> T) {
int N = P.size();
// Store coupons as (price, type, index)
vector<tuple<int, int, int>> coupons;
for (int i = 0; i < N; i++) {
coupons.emplace_back(P[i], T[i], i);
}
// Sort by price
sort(coupons.begin(), coupons.end());
// Max-heap: prioritize larger T, then smaller P
priority_queue<tuple<int, int, int>> pq;
long long tokens = A;
int idx = 0;
vector<int> result;
while (true) {
// Push all affordable coupons
while (idx < N && get<0>(coupons[idx]) <= tokens) {
auto [p, t, i] = coupons[idx];
pq.emplace(t, -p, i); // max T, min P
idx++;
}
if (pq.empty())
break;
// Pick best coupon
auto [t, neg_p, i] = pq.top();
pq.pop();
int p = -neg_p;
tokens = (tokens - p) * t;
result.push_back(i);
}
return result;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |