제출 #1292277

#제출 시각아이디문제언어결과실행 시간메모리
1292277AliMark71Secret (JOI14_secret)C++20
0 / 100
327 ms4536 KiB
// // main.cpp // EliteCamp 2025 // // Created by Ali AlSalman on 14/11/2025. // #include <bits/stdc++.h> //#define INTERACTIVE //#define TESTCASES //#define SPOJ_BULLSCHEI__SZ__E__KIJETESANPAKALU__ template<typename T> using vec = std::vector<T>; using namespace std; int Secret(int x, int y); struct segtree { struct node { int sum; static node merge(const node& lhs, const node& rhs) { return { Secret(lhs.sum, rhs.sum) }; } }; vec<optional<node>> _data; int _offset; segtree() {} segtree(int n, int a[]) { if (__builtin_popcount(n) == 1) _offset = n; else _offset = (1<<(32 - __builtin_clz(n))); _data.resize(2 * _offset); for (int i = 0; i < n; i++) _data[i + _offset] = { a[i] }; for (int i = _offset - 1; i; i--) _data[i] = node::merge(_data[2 * i].value(), _data[2 * i + 1].value()); } optional<node> _query(int v, int l, int r, int ql, int qr) { if (ql <= l && r <= qr) return _data[v]; else if (r <= ql || qr <= l) return nullopt; else { int mid = (l + r) / 2; auto lhs = _query(2 * v, l, mid, ql, qr); auto rhs = _query(2 * v + 1, mid, r, ql, qr); if (!lhs.has_value()) return rhs; if (!rhs.has_value()) return lhs; return node::merge(lhs.value(), rhs.value()); } } void set(int i, node n) { i += _offset; _data[i] = n; for (i /= 2; i; i /= 2) _data[i] = node::merge(_data[2 * i].value(), _data[2 * i + 1].value()); } node query(int l, int r) { l += _offset; r += _offset; return _query(1, _offset, 2 * _offset, l, r).value(); } }; segtree st; void Init(int n, int a[]) { st = segtree(n, a); } int Query(int l, int r) { return st.query(l, ++r).sum; } //int main() { //#ifndef INTERACTIVE // ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); //#endif // // int t = 1; //#ifdef TESTCASES // cin>>t; //#endif // // for (int i = t; i--;) { //#if defined(TESTCASES) && defined(SPOJ_BULLSCHEI__SZ__E__KIJETESANPAKALU__) // cout<<"Case "<<t-i<<":\n"; //#elif defined(SPOJ_BULLSCHEI__SZ__E__KIJETESANPAKALU__) //#warning SPOJ_BULLSCHEIßE__KIJETESANPAKALU__ without TESTCASES doesn't ducking make sense! //#endif // solve(); // } // return 0; //}
#Verdict Execution timeMemoryGrader output
Fetching results...