# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1208626 | phungmanager0 | Happiness (Balkan15_HAPPINESS) | C++20 | 0 ms | 0 KiB |
#include "happiness.h"
#include "bits/stdc++.h"
multiset<long long> s[40];
int sum[40];
void update(int x, bool del) {
int k = 31 - __builtin_clz(x);
if(del) {
s[k].erase(x);
s[k] -= x;
} else {
s[k].insert(x);
s[k] += x;
}
}
bool get() {
int sum = 0;
for(int i = 0; i < 40; i++) {
if(s[i].size()) {
auto it = s[i].begin();
if(*it <= sum + 1) {
if(s[i].size() > 1) {
if(sum + *it + 1 < *(++it)) return false;
}
} else return false;
}
}
return true;
}
bool is_happy(int event, int coinsCount, long long coins[]) {
for(int i = 0; i < coinsCount; i++) {
if(event == -1) update(coins[i], true);
else update(coins[i], false);
}
return get();
}
bool init(int coinsCount, long long maxCoinSize, long long coins[]) {
for(int i = 0; i < coinsCount; i++) update(coins[i], false);
return get();
}