Submission #1174521

#TimeUsernameProblemLanguageResultExecution timeMemory
1174521khangrlGym Badges (NOI22_gymbadges)C++20
0 / 100
299 ms6484 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>

using namespace std;

struct Gym {
    int levelCap;
    int levelGain;
};

// Comparator for sorting gyms by level cap
bool compareGyms(const Gym &a, const Gym &b) {
    return a.levelCap < b.levelCap;
}

int maxBadges(vector<Gym> &gyms) {
    sort(gyms.begin(), gyms.end(), compareGyms); // Sort gyms by level cap
    priority_queue<int> pq; // Max-heap to store level gains
    int currentLevel = 0, badgeCount = 0, i = 0, n = gyms.size();

    while (i < n || !pq.empty()) {
        // Add all gyms that are available to challenge
        while (i < n && gyms[i].levelCap >= currentLevel) {
            pq.push(gyms[i].levelGain);
            i++;
        }
        
        // If no gym can be challenged, break
        if (pq.empty()) break;

        // Challenge the gym with the highest level gain
        currentLevel += pq.top();
        pq.pop();
        badgeCount++;
    }

    return badgeCount;
}

int main() {
    int N;
    cin >> N;
    vector<Gym> gyms(N);

    for (int i = 0; i < N; i++) {
        cin >> gyms[i].levelCap >> gyms[i].levelGain;
    }

    cout << maxBadges(gyms) << endl;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...