Submission #702756

#TimeUsernameProblemLanguageResultExecution timeMemory
702756maomao90popa (BOI18_popa)C++17
100 / 100
98 ms420 KiB
// Hallelujah, praise the one who set me free // Hallelujah, death has lost its grip on me // You have broken every chain, There's salvation in your name // Jesus Christ, my living hope #include <bits/stdc++.h> #include "popa.h" using namespace std; #define REP(i, s, e) for (int i = (s); i < (e); i++) #define RREP(i, s, e) for (int i = (s); i >= (e); i--) template <class T> inline bool mnto(T& a, T b) {return a > b ? a = b, 1 : 0;} template <class T> inline bool mxto(T& a, T b) {return a < b ? a = b, 1: 0;} typedef long long ll; typedef long double ld; #define FI first #define SE second typedef pair<int, int> ii; typedef pair<ll, ll> pll; typedef tuple<int, int, int> iii; #define ALL(_a) _a.begin(), _a.end() #define SZ(_a) (int) _a.size() #define pb push_back typedef vector<int> vi; typedef vector<ll> vll; typedef vector<ii> vii; typedef vector<iii> viii; #ifndef DEBUG #define cerr if (0) cerr #endif const int INF = 1000000005; const ll LINF = 1000000000000000005ll; const int MAXN = 1005; int solve(int n, int *left, int *right) { REP (i, 0, n) { left[i] = right[i] = -1; } vi stk; stk.pb(0); REP (i, 1, n) { int prv = -1; while (!stk.empty() && !query(stk.back(), stk.back(), stk.back(), i)) { int u = stk.back(); stk.pop_back(); right[u] = prv; prv = u; } left[i] = prv; stk.pb(i); } int prv = -1; while (!stk.empty()) { int u = stk.back(); stk.pop_back(); right[u] = prv; prv = u; } return prv; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...