Submission #641771

#TimeUsernameProblemLanguageResultExecution timeMemory
641771finn__Happiness (Balkan15_HAPPINESS)C++17
0 / 100
396 ms524288 KiB
#include <bits/stdc++.h> using namespace std; #include "happiness.h" struct tnode { int64_t t; tnode *l, *r; uint64_t x, y; void *new_node() { if (!l) { l = new tnode; l->l = 0; l->r = 0; l->t = 0; l->x = x; l->y = (x + y) / 2; } if (!r) { r = new tnode; r->l = 0; r->r = 0; r->t = 0; r->x = (x + y) / 2 + 1; r->y = y; } } void update(uint64_t i, int64_t v) { if (x == i && y == i) t += v; else { new_node(); if (i <= (x + y) / 2) l->update(i, v); else r->update(i, v); t = l->t + r->t; } } int64_t range_sum(uint64_t i, uint64_t j) { if (y < i || x > j) return 0; if (i <= x && y <= j) return t; else { new_node(); return l->range_sum(i, j) + r->range_sum(i, j); } } }; tnode *root; bool check() { int64_t curr = 1, sum = root->t; while (curr < sum) { int64_t v = root->range_sum(1, curr); if (v < curr) return 0; curr = v + 1; } return 1; } bool init(int coinsCount, long long maxCoinSize, long long coins[]) { root = new tnode; root->t = 0; root->x = 0; root->y = maxCoinSize + 1; root->l = 0; root->r = 0; for (int i = 0; i < coinsCount; i++) root->update(coins[i], coins[i]); return check(); } bool is_happy(int event, int coinsCount, long long coins[]) { for (int i = 0; i < coinsCount; i++) root->update(coins[i], event * coins[i]); return check(); }

Compilation message (stderr)

happiness.cpp: In member function 'void* tnode::new_node()':
happiness.cpp:34:5: warning: no return statement in function returning non-void [-Wreturn-type]
   34 |     }
      |     ^
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...