#include "happiness.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define N T[i]
struct node {
ll mx, lz;
int lc, rc;
} T[1<<25];
map<ll, int> mp;
int rt, cnt;
int nn() {
T[++cnt]={0,0,0,0};
return cnt;
}
void pd(int i) {
if(N.lz) {
N.mx+=N.lz;
if(!N.lc)
N.lc=nn();
if(!N.rc)
N.rc=nn();
T[N.lc].lz+=N.lz;
T[N.rc].lz+=N.lz;
}
N.lz=0;
}
void upd(int &i,ll v,ll tl,ll tr=1e12,ll l=1,ll r=1e12) {
if(!i) i=nn();
else pd(i);
if(tl>r||tr<l)
return;
if(tl<=l&&r<=tr) {
N.lz+=v;
pd(i);
return;
}
if(tl<=l+r>>1||N.lc)
upd(N.lc,v,tl,tr,l,l+r>>1ll);
if(tr>l+r>>1||N.rc)
upd(N.rc,v,tl,tr,l+r+2>>1,r);
N.mx=max(T[N.lc].mx,T[N.rc].mx);
}
void add(ll val) {
upd(rt,-val,val);
upd(rt,val,val,val);
if(!mp[val])
upd(rt,val,val,val);
mp[val]++;
}
void del(ll val) {
upd(rt,val,val);
upd(rt,-val,val,val);
mp[val]--;
if(!mp[val])
upd(rt,-val,val,val);
}
bool init(int coinsCount, ll maxCoinSize, ll coins[]) {
for(int i=0;i<coinsCount;i++)
add(coins[i]);
return T[rt].mx<2;
}
bool is_happy(int event, int coinsCount, ll coins[]) {
for(int i=0;i<coinsCount;i++)
(event+1?add:del)(coins[i]);
return T[rt].mx<2;
}
Compilation message
happiness.cpp: In function 'void upd(int&, long long int, long long int, long long int, long long int, long long int)':
happiness.cpp:38:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
38 | if(tl<=l+r>>1||N.lc)
| ~^~
happiness.cpp:39:29: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
39 | upd(N.lc,v,tl,tr,l,l+r>>1ll);
| ~^~
happiness.cpp:40:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
40 | if(tr>l+r>>1||N.rc)
| ~^~
happiness.cpp:41:29: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
41 | upd(N.rc,v,tl,tr,l+r+2>>1,r);
| ~~~^~
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 |
2396 KB |
Output is correct |
2 |
Correct |
1 ms |
2396 KB |
Output is correct |
3 |
Correct |
1 ms |
2396 KB |
Output is correct |
4 |
Correct |
1 ms |
2396 KB |
Output is correct |
5 |
Correct |
2 ms |
2392 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
2396 KB |
Output is correct |
2 |
Correct |
1 ms |
2396 KB |
Output is correct |
3 |
Correct |
1 ms |
2396 KB |
Output is correct |
4 |
Correct |
1 ms |
2396 KB |
Output is correct |
5 |
Correct |
2 ms |
2392 KB |
Output is correct |
6 |
Correct |
5 ms |
6748 KB |
Output is correct |
7 |
Correct |
6 ms |
6748 KB |
Output is correct |
8 |
Correct |
58 ms |
29968 KB |
Output is correct |
9 |
Correct |
55 ms |
29784 KB |
Output is correct |
10 |
Correct |
48 ms |
29776 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
2396 KB |
Output is correct |
2 |
Correct |
1 ms |
2396 KB |
Output is correct |
3 |
Correct |
1 ms |
2396 KB |
Output is correct |
4 |
Correct |
1 ms |
2396 KB |
Output is correct |
5 |
Correct |
2 ms |
2392 KB |
Output is correct |
6 |
Correct |
1352 ms |
65968 KB |
Output is correct |
7 |
Correct |
1313 ms |
63808 KB |
Output is correct |
8 |
Correct |
1360 ms |
65912 KB |
Output is correct |
9 |
Execution timed out |
2093 ms |
75052 KB |
Time limit exceeded |
10 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
2396 KB |
Output is correct |
2 |
Correct |
1 ms |
2396 KB |
Output is correct |
3 |
Correct |
1 ms |
2396 KB |
Output is correct |
4 |
Correct |
1 ms |
2396 KB |
Output is correct |
5 |
Correct |
2 ms |
2392 KB |
Output is correct |
6 |
Correct |
5 ms |
6748 KB |
Output is correct |
7 |
Correct |
6 ms |
6748 KB |
Output is correct |
8 |
Correct |
58 ms |
29968 KB |
Output is correct |
9 |
Correct |
55 ms |
29784 KB |
Output is correct |
10 |
Correct |
48 ms |
29776 KB |
Output is correct |
11 |
Correct |
1352 ms |
65968 KB |
Output is correct |
12 |
Correct |
1313 ms |
63808 KB |
Output is correct |
13 |
Correct |
1360 ms |
65912 KB |
Output is correct |
14 |
Execution timed out |
2093 ms |
75052 KB |
Time limit exceeded |
15 |
Halted |
0 ms |
0 KB |
- |