답안 #736829

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
736829 2023-05-06T09:25:07 Z MODDI Happiness (Balkan15_HAPPINESS) C++14
60 / 100
1720 ms 524288 KB
#include "happiness.h"
//#include "grader.cpp"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
typedef long long ll;
typedef pair<long long, long long> pll;
typedef pair<int,int> pii;
typedef vector<long long> vl;
typedef vector<int> vi;
ll mx;
struct Node{
	ll sum, tl, tr, l, r;
	Node() : sum(0), l(-1), r(-1){}
};
Node tree[40 * 200010];
int cnt = 2;
void update(int node, ll pos, ll add){
	if(tree[node].tl == tree[node].tr && tree[node].tl == pos){
		tree[node].sum += add;
		return;
	}
	else{
		ll mid = (tree[node].tl + tree[node].tr) / 2;
		if(tree[node].l == -1){
			tree[node].l = cnt++;
			tree[tree[node].l].tl = tree[node].tl;
			tree[tree[node].l].tr = mid;
		}
		if(tree[node].r == -1){
			tree[node].r = cnt++;
			tree[tree[node].r].tl = mid+1;
			tree[tree[node].r].tr = tree[node].tr;
		}
		if(pos <= mid){
			update(tree[node].l, pos, add);
		}
		else
			update(tree[node].r, pos, add);
			
		tree[node].sum = tree[tree[node].l].sum + tree[tree[node].r].sum;
	}
}
ll query(int node, ll l, ll r){
	if(tree[node].tl > r || tree[node].tr < l)	return 0;
	if(l == tree[node].tl && tree[node].tr == r) return tree[node].sum;
	else{
		ll mid=(tree[node].tl + tree[node].tr) /2;
		if(tree[node].l == -1){
			tree[node].l = cnt++;
			tree[tree[node].l].tl = tree[node].tl;
			tree[tree[node].l].tr = mid;
		}
		if(tree[node].r == -1){
			tree[node].r = cnt++;
			tree[tree[node].r].tl = mid+1;
			tree[tree[node].r].tr = tree[node].tr;
		}
		if(l > mid)	return query(tree[node].r, l, r);
		else if(r <= mid)	return query(tree[node].l, l, r);
		else{
			return query(tree[node].l, l, mid) + query(tree[node].r, mid+1, r);
		}
	}
	
}
bool check(){
	ll coin = 1, tot = query(1, 1, mx);
	while(coin <= mx){
		ll sum = query(1, 1, coin);
		if(sum + 1 > mx)	return true;
		if(tot == sum)	return true;
		if(query(1, coin+1, sum+1) == 0)	return false;
		coin = sum + 1;
	}
	return true;
}
bool init(int n, ll M, ll a[]){
	mx = M;
	tree[1].sum = 0;
	tree[1].tl = 1;
	tree[1].tr = 1e12;
	for(int i = 0; i < n; i++)
		update(1, a[i], a[i]);
		
	return check();
}
bool is_happy(int e, int n, ll a[]){
	for(int i = 0; i < n; i++)
		update(1, a[i], a[i]*e);
		
	return check();
}

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 114 ms 313380 KB Output is correct
2 Correct 114 ms 313396 KB Output is correct
3 Correct 118 ms 313436 KB Output is correct
4 Correct 136 ms 313400 KB Output is correct
5 Correct 114 ms 313484 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 114 ms 313380 KB Output is correct
2 Correct 114 ms 313396 KB Output is correct
3 Correct 118 ms 313436 KB Output is correct
4 Correct 136 ms 313400 KB Output is correct
5 Correct 114 ms 313484 KB Output is correct
6 Correct 122 ms 313532 KB Output is correct
7 Correct 141 ms 313428 KB Output is correct
8 Correct 168 ms 313808 KB Output is correct
9 Correct 148 ms 313692 KB Output is correct
10 Correct 150 ms 313560 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 114 ms 313380 KB Output is correct
2 Correct 114 ms 313396 KB Output is correct
3 Correct 118 ms 313436 KB Output is correct
4 Correct 136 ms 313400 KB Output is correct
5 Correct 114 ms 313484 KB Output is correct
6 Correct 933 ms 314396 KB Output is correct
7 Correct 923 ms 314316 KB Output is correct
8 Correct 1012 ms 314276 KB Output is correct
9 Correct 1247 ms 314320 KB Output is correct
10 Correct 1101 ms 314368 KB Output is correct
11 Correct 433 ms 313692 KB Output is correct
12 Correct 449 ms 313604 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 114 ms 313380 KB Output is correct
2 Correct 114 ms 313396 KB Output is correct
3 Correct 118 ms 313436 KB Output is correct
4 Correct 136 ms 313400 KB Output is correct
5 Correct 114 ms 313484 KB Output is correct
6 Correct 122 ms 313532 KB Output is correct
7 Correct 141 ms 313428 KB Output is correct
8 Correct 168 ms 313808 KB Output is correct
9 Correct 148 ms 313692 KB Output is correct
10 Correct 150 ms 313560 KB Output is correct
11 Correct 933 ms 314396 KB Output is correct
12 Correct 923 ms 314316 KB Output is correct
13 Correct 1012 ms 314276 KB Output is correct
14 Correct 1247 ms 314320 KB Output is correct
15 Correct 1101 ms 314368 KB Output is correct
16 Correct 433 ms 313692 KB Output is correct
17 Correct 449 ms 313604 KB Output is correct
18 Runtime error 1720 ms 524288 KB Execution killed with signal 11
19 Halted 0 ms 0 KB -