답안 #538354

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
538354 2022-03-16T16:03:44 Z fcw Happiness (Balkan15_HAPPINESS) C++17
100 / 100
401 ms 16132 KB
#include "happiness.h"
#include <bits/stdc++.h>
using namespace std;

using lint = long long;
multiset<lint>s[40];
lint sum[40];

void add(lint x, int b){
	int p = 0;
	while(1ll<<(p+1) <= x) p++;
	if(b == 1) s[p].insert(x), sum[p] += x;
	else s[p].erase(s[p].find(x)), sum[p] -= x;
}

bool ok(){
	lint cnt = 0;
	for(int i=0;i<40;i++){
		if(s[i].empty()) continue;
		lint x = *s[i].begin();
		if(cnt + 1 < x) return 0;
		if(s[i].size() > 1 && cnt + x + 1 < *next(s[i].begin())) return 0;
		cnt += sum[i];
	}
	return 1;
}

bool init(int coinsCount, lint maxCoinSize, lint coins[]) {
	for(int i=0;i<coinsCount;i++) add(coins[i], 1);
	return ok();
}

bool is_happy(int event, int coinsCount, lint coins[]){
	for(int i=0;i<coinsCount;i++){
		if(event == -1) add(coins[i], -1);
		else add(coins[i], 1);
	}
	return ok();
}

Compilation message

grader.cpp: In function 'int main()':
grader.cpp:16:12: warning: unused variable 'max_code' [-Wunused-variable]
   16 |  long long max_code;
      |            ^~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 312 KB Output is correct
3 Correct 1 ms 308 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 312 KB Output is correct
3 Correct 1 ms 308 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 1 ms 320 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 6 ms 956 KB Output is correct
9 Correct 6 ms 936 KB Output is correct
10 Correct 6 ms 980 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 312 KB Output is correct
3 Correct 1 ms 308 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 170 ms 8976 KB Output is correct
7 Correct 145 ms 9036 KB Output is correct
8 Correct 170 ms 8996 KB Output is correct
9 Correct 243 ms 10388 KB Output is correct
10 Correct 401 ms 13024 KB Output is correct
11 Correct 163 ms 13572 KB Output is correct
12 Correct 180 ms 13628 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 312 KB Output is correct
3 Correct 1 ms 308 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 1 ms 320 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 6 ms 956 KB Output is correct
9 Correct 6 ms 936 KB Output is correct
10 Correct 6 ms 980 KB Output is correct
11 Correct 170 ms 8976 KB Output is correct
12 Correct 145 ms 9036 KB Output is correct
13 Correct 170 ms 8996 KB Output is correct
14 Correct 243 ms 10388 KB Output is correct
15 Correct 401 ms 13024 KB Output is correct
16 Correct 163 ms 13572 KB Output is correct
17 Correct 180 ms 13628 KB Output is correct
18 Correct 246 ms 11508 KB Output is correct
19 Correct 227 ms 11368 KB Output is correct
20 Correct 359 ms 14320 KB Output is correct
21 Correct 230 ms 10780 KB Output is correct
22 Correct 195 ms 15668 KB Output is correct
23 Correct 195 ms 16132 KB Output is correct
24 Correct 209 ms 11260 KB Output is correct