Submission #823803

#TimeUsernameProblemLanguageResultExecution timeMemory
823803Alihan_8Secret (JOI14_secret)C++17
0 / 100
365 ms4328 KiB
#include <bits/stdc++.h> #include "secret.h" using namespace std; #define all(x) x.begin(), x.end() #define pb push_back #define ln '\n' //#define int long long template <class _T> bool chmin(_T &x, const _T &y){ bool flag = false; if ( x > y ){ x = y; flag |= true; } return flag; } template <class _T> bool chmax(_T &x, const _T &y){ bool flag = false; if ( x < y ){ x = y; flag |= true; } return flag; } const int N = 1e3 + 1; struct SegTree{ int T[N * 4], n; void build(vector <int> &a){ n = (int)a.size(); auto F = [&](auto &F, int v, int l, int r) -> void{ if ( l == r ){ T[v] = a[l]; return; } int md = (l + r) >> 1; F(F, v * 2, l, md), F(F, v * 2 + 1, md + 1, r); T[v] = Secret(T[v * 2], T[v * 2 + 1]); }; F(F, 1, 0, n - 1); } int get(int v, int l, int r, int tl, int tr){ if ( l > tr or r < tl ){ return -1; } if ( l <= tl and r >= tr ){ return T[v]; } int md = (l + r) >> 1; int L = get(v * 2, l, md, tl, tr), R = get(v * 2 + 1, md + 1, r, tl, tr); if ( L == -1 ) swap(L, R); if ( R != -1 ){ L = Secret(L, R); } return L; } int get(int L, int R){ return get(1, 0, n - 1, L, R); } } tuf; void Init(int n, int A[]) { vector <int> a; for ( int i = 0; i < n; i++ ){ a.pb(A[i]); } tuf.build(a); } int Query(int L, int R) { return tuf.get(L, R); }
#Verdict Execution timeMemoryGrader output
Fetching results...