Submission #1310338

#TimeUsernameProblemLanguageResultExecution timeMemory
1310338beluga_catFestival (IOI25_festival)C++20
0 / 100
72 ms10292 KiB
#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 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...