제출 #287651

#제출 시각아이디문제언어결과실행 시간메모리
287651luciocfpopa (BOI18_popa)C++14
61 / 100
751 ms508 KiB
#include <bits/stdc++.h> #include "popa.h" using namespace std; const int maxn = 1e3+10; int n; int L[maxn], R[maxn]; int a[maxn], b[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] && a[i] <= l && b[i] >= r) { 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 get(int i) { int ini = 0, fim = i-1; a[i] = i; while (ini <= fim) { int mid = (ini+fim)>>1; if (query(mid, i, i, i)) a[i] = mid, fim = mid-1; else ini = mid+1; } ini = i+1, fim = n-1; b[i] = i; while (ini <= fim) { int mid = (ini+fim)>>1; if (query(i, mid, i, i)) b[i] = mid, ini = mid+1; else fim = mid-1; } } int solve(int N, int *Left, int *Right) { memset(mark, 0, sizeof mark); n = N; for (int i = 0; i < n; i++) get(i); f(0, n-1); for (int i = 0; i < n; i++) Left[i] = L[i], Right[i] = R[i]; return root; }

컴파일 시 표준 에러 (stderr) 메시지

popa.cpp: In function 'int f(int, int)':
popa.cpp:34:1: warning: control reaches end of non-void function [-Wreturn-type]
   34 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...