제출 #1144547

#제출 시각아이디문제언어결과실행 시간메모리
1144547not_amirpopa (BOI18_popa)C++20
0 / 100
3 ms424 KiB
#include <bits/stdc++.h> #include "popa.h" using namespace std; vector<int> parent; vector<bool> seen; int cntr; void calc(int v, int p) { while (v != p) { seen[v] = true; cntr = max(cntr, v); if (query(v, v + 1, v + 1, v + 1)) parent[v] = v + 1; else { calc(v + 1, v); if (query(v, cntr + 1, p, cntr + 1)) parent[v] = p; else parent[v] = cntr + 1; } v = parent[v]; } } int solve(int N, int* L, int* R) { cntr = 0; parent.assign(N, -1); seen.assign(N, false); parent[0] = 1; seen[0] = seen[1] = true; int p = 1; while (!seen[N - 1]) { calc(p + 1, p); p = parent[p] = cntr + 1; } for (int i = 0; i < N; i++) L[i] = R[i] = -1; int r = -1; for (int i = 0; i < N; i++) { if (parent[i] == -1) r = i; else { if (i < parent[i]) L[parent[i]] = i; else R[parent[i]] = i; } } return r; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...