Submission #1188685

#TimeUsernameProblemLanguageResultExecution timeMemory
1188685sonyaHappiness (Balkan15_HAPPINESS)C++20
30 / 100
2095 ms5700 KiB
#include "happiness.h"
#include <set>
#include <vector>
#include <algorithm>
using namespace std;

multiset<long long> coins_set;
long long total_sum = 0;

bool check_happy() {
    long long reach = 0;
    for (long long coin : coins_set) {
        if (coin > reach + 1) return false;
        reach += coin;
    }
    return true;
}

bool init(int coinsCount, long long maxCoinSize, long long coins[]) {
    coins_set.clear();
    total_sum = 0;
    for (int i = 0; i < coinsCount; ++i) {
        coins_set.insert(coins[i]);
        total_sum += coins[i];
    }
    return check_happy();
}

bool is_happy(int event, int coinsCount, long long coins[]) {
    if (event == -1) { // shopping → remove
        for (int i = 0; i < coinsCount; ++i) {
            auto it = coins_set.find(coins[i]);
            if (it != coins_set.end()) {
                coins_set.erase(it);
                total_sum -= coins[i];
            }
        }
    } else if (event == 1) { // wage → add
        for (int i = 0; i < coinsCount; ++i) {
            coins_set.insert(coins[i]);
            total_sum += coins[i];
        }
    }
    return check_happy();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...