Submission #417028

#TimeUsernameProblemLanguageResultExecution timeMemory
417028MarcoMeijerHappiness (Balkan15_HAPPINESS)C++14
100 / 100
1802 ms363252 KiB
#include "happiness.h" #include <bits/stdc++.h> using namespace std; typedef pair<int,int> ii; typedef long long ll; typedef pair<int,int> ii; typedef vector<int> vi; typedef vector<ii> vii; typedef vector<ll> vll; #define REP(a,b,c) for(int a=int(b); a<int(c); a++) #define REV(a,b,c) for(int a=int(c-1); a>=int(b); a--) #define RE(a,b) REP(a,0,b) #define RE1(a,b) REP(a,1,b+1) #define FOR(a,b) for(auto& a : b) #define pb push_back #define all(a) a.begin(),a.end() #define fi first #define se second const ll INF = 1ll<<40ll; const int MX = 5e5; const int N = 1<<24; const int MOD = 1e9+7; int n; ll seg[N], pl[N], pr[N]; int segcnt=1; ll tot = 0; // sparse seg void createChildren(int p) { if(pl[p]) return; pl[p] = segcnt++; pr[p] = segcnt++; } void addSeg(ll i, ll v, int p=0, ll l=0, ll r=INF-1) { if(i < l || i > r) return; if(l == r) { seg[p] += v; tot += v; return; } ll m=(l+r)/2; createChildren(p); addSeg(i,v,pl[p],l,m); addSeg(i,v,pr[p],m+1,r); seg[p] = seg[pl[p]]+seg[pr[p]]; } ll getSeg(ll i, ll j, int p=0, ll l=0, ll r=INF-1) { if(j < l || i > r) return 0; if(i <= l && j >= r) return seg[p]; ll m=(l+r)/2; if(pl[p]==0) return 0; ll a=getSeg(i,j,pl[p],l,m); ll b=getSeg(i,j,pr[p],m+1,r); return a+b; } // problem bool getAns() { ll cur = 1; while(cur < tot) { ll res = getSeg(0,cur); if(res < cur) return false; cur = res+1; } return true; } bool init(int coinsCount, long long maxCoinSize, long long coins[]) { RE(i,coinsCount) addSeg(coins[i],1ll*coins[i]); return getAns(); } bool is_happy(int event, int coinsCount, long long coins[]) { RE(i,coinsCount) addSeg(coins[i],event*coins[i]); return getAns(); }

Compilation message (stderr)

grader.cpp: In function 'int main()':
grader.cpp:16:12: warning: unused variable 'max_code' [-Wunused-variable]
   16 |  long long max_code;
      |            ^~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...