제출 #530909

#제출 시각아이디문제언어결과실행 시간메모리
530909EvangHappiness (Balkan15_HAPPINESS)C++17
60 / 100
987 ms524292 KiB
#include <bits/extc++.h> #include "happiness.h" using namespace std; using namespace __gnu_pbds; #ifdef _DEBUG #define dout(x) clog << "Line " << __LINE__ << ": " << #x << "=" << (x) << el #else #define dout(x) #endif mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); #define uid(a,b) uniform_int_distribution<int>(a,b)(rng) #define ins insert #define ssize(x) (int((x).size())) #define bs(args...) binary_search(args) #define lb(args...) lower_bound(args) #define ub(args...) upper_bound(args) #define all(x) (x).begin(),(x).end() #define mp(a, b) make_pair(a, b) #define mt(args...) make_tuple(args) #define pb(x) push_back(x) #define eb(args...) emplace_back(args) #define ff first #define ss second #define die exit(0) template<typename T> using vc = vector<T>; template<typename T> using uset = unordered_set<T>; template<typename A, typename B> using umap = unordered_map<A, B>; template<typename T, typename Comp> using pq = std::priority_queue<T, vc<T>, Comp>; template<typename T> using maxpq = pq<T, less<T>>; template<typename T> using minpq = pq<T, greater<T>>; template<typename T> using oset = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; using db = double; using ld = long double; using ll = long long; using ull = unsigned long long; using pi = pair<int, int>; using pll = pair<ll, ll>; using vi = vc<int>; using vll = vc<ll>; using vpi = vc<pi>; using vpll = vc<pll>; using str = string; constexpr char el = '\n'; constexpr char sp = ' '; constexpr int inf = 0x3f3f3f3f; constexpr ll llinf = 0x3f3f3f3f3f3f3f3fLL; // --------------------------------------------------------------------- struct node { ll x, sum; node *left=nullptr, *right=nullptr, *parent=nullptr; node *l() { if(left==nullptr) { left = new node; left->parent = this; } return left; } node *r(){ if(right==nullptr) { right = new node; right->parent = this; } return right; } }; static node *root = new node; static void upd(ll a, int d){ ll l = 1, r = 1ll << 40; node *v = root; while(l<r){ ll im = (l+r)/2; if(a <= im){ v = v->l(); r = im; }else{ v = v->r(); l = im+1; } } v->sum += a*d; if(v->sum>0) v->x = a-1; else v->x = 0; while(v->parent!=nullptr){ v = v->parent; v->x = max({0ll, v->l()->x, v->r()->x-v->l()->sum}); v->sum = v->l()->sum + v->r()->sum; } } bool happy(){ return root->x == 0; } bool init(int n, ll _, ll a[]){ for(int i = 0; i < n; ++i) upd(a[i], 1); return happy(); } bool is_happy(int d, int n, ll a[]){ for(int i = 0; i < n; ++i) upd(a[i], d); return happy(); } #ifdef _DEBUG signed main(){ freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); ll a[] = {4, 8, 1, 2, 16}; cout << init(5, 100, a) << el; ll b[] = {2, 8}; cout << is_happy(-1, 2, b) << el; ll c[] = {7, 9, 2}; cout << is_happy(1, 3, c) << el; } #endif

컴파일 시 표준 에러 (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...