Submission #1253136

#TimeUsernameProblemLanguageResultExecution timeMemory
1253136anfiFestival (IOI25_festival)C++20
0 / 100
75 ms10420 KiB
#include <bits/stdc++.h>
using namespace std;

vector<int> max_coupons(int A, vector<int> P, vector<int> T) {
    int N = P.size();
    vector<bool> used(N, false); 
    vector<int> result;

    priority_queue<tuple<int, int, int>> pq;

    for (int i = 0; i < N; ++i) {
        pq.emplace(-T[i], P[i], i);
    }

    int token = A;

    while (true) {
        bool bought = false;
        priority_queue<tuple<int, int, int>> temp;

        while (!pq.empty()) {
            auto [negT, price, idx] = pq.top(); pq.pop();

            if (used[idx]) continue; 

            if (price <= token) {
                token = (token - price) * T[idx];
                result.push_back(idx);
                used[idx] = true;
                bought = true;
                break;
            } else {
                temp.emplace(negT, price, idx);
            }
        }

        while (!temp.empty()) {
            pq.push(temp.top());
            temp.pop();
        }

        if (!bought) break; 
    }

    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...