제출 #1272228

#제출 시각아이디문제언어결과실행 시간메모리
1272228123abc_mfongHappiness (Balkan15_HAPPINESS)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h> using namespace std; #include "happiness.h" #define ll long long ll n,m,q,e,k,a[102100]={0},t[402100]={0},sum=0,b[10]; void build(ll v, ll l, ll r){ if(l==r){ t[v]=a[l]; return; } ll mid=(l+r)/2; build(v*2,l,mid); build(v*2+1,mid+1,r); t[v]=t[v*2]+t[v*2+1]; // cout<<v<<" "<<l<<" "<<r<<" "<<t[v]<<" "<<t[v*2]<<" "<<t[v*2+1]<<"\n"; } ll query(ll v, ll l, ll r, ll tl, ll tr){ if(l>tr||r<tl)return 0; if(tl<=l&&tr>=r)return t[v]; ll mid=(l+r)/2; // cout<<v<<" "<<l<<" "<<r<<" "<<t[v]<<"\n"; return query(v*2,l,mid,tl,tr)+query(v*2+1,mid+1,r,tl,tr); } void update(ll v, ll l, ll r, ll pos, ll val){ // cout<<v<<" "<<l<<" "<<r<<" "<<pos<<" "<<val<<"\n"; if(pos<l||pos>r)return; if(l==r){ t[v]+=val; return; } ll mid=(l+r)/2; update(v*2,l,mid,pos,val); update(v*2+1,mid+1,r,pos,val); t[v]=t[v*2]+t[v*2+1]; } bool check(){ ll w=1; while(w<=sum){ ll res=query(1,1,m,1,w); // cout<<w<<" "<<res<<"\n"; if(res<w)return false; w=res+1; } return true; } bool init(int coinsCount, long long maxCoinSize, long long coins[]) { n=coinsCount; m=maxCoinSize; for(int i=1;i<=n;i++){ll v=coins[i-1]; cin>>v; a[v]+=v; sum+=v; } build(1,1,m); return check(); } bool is_happy(int event, int coinsCount, long long coins[]) { e=event; k=coinsCount; for(ll i=1;i<=k;i++)b[i]=coins[i-1]; for(int i=1;i<=k;i++)cin>>b[i]; for(int i=1;i<=k;i++)sum+=e*b[i]; for(int i=1;i<=k;i++)update(1,1,m,b[i],e*b[i]); return check(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...