# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
287625 | 2020-08-31T21:29:50 Z | luciocf | popa (BOI18_popa) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> #include "popa.h" using namespace std; const int maxn = 1e3+10; int n; int L[maxn], R[maxn]; int root; bool mark[maxn]; int f(int l, int r) { if (l > r) return -1; for (int i = 0; i < n; i++) { if (!mark[i] && query(l, r, i, i)) { if (l == 0 && r == n-1) root = i; mark[i] = 1; L[i] = f(l, i-1); R[i] = f(i+1, r); return i; } } } void solve(int N, int *Left, int *Right) { memset(mark, 0, sizeof mark); n = N; f(0, n-1); for (int i = 0; i < n; i++) Left[i] = L[i], Right[i] = R[i]; return root; }