제출 #1252144

#제출 시각아이디문제언어결과실행 시간메모리
1252144FernandoJC07Obstacles for a Llama (IOI25_obstacles)C++20
24 / 100
116 ms10944 KiB
#include <bits/stdc++.h> #define For(i, a, n) for(int i = a; i<n; ++i) #define vi vector<int> #define vii vector<vector<int>> using namespace std; vi res; void initialize(vi T, vi H){ int n = T.size(); int m = H.size(); vi mh(m); mh[0] = H[0]; For(i, 1, m) mh[i] = min(mh[i-1], H[i]); vi lt(n); For(i, 0, n){ int lower = m-1 - (lower_bound(mh.begin(), mh.end(), T[i]) - mh.begin()); lt[i] = lower; } vi maxlt(n); maxlt[0] = lt[0]; For(i, 1, n) maxlt[i] = max(maxlt[i-1], lt[i]); vi mt(n); mt[0] = T[0]; For(i, 1, n) mt[i] = max(mt[i-1], T[i]); For(i, 0, m){ int upper = upper_bound(mt.begin(), mt.end(), H[i]) - mt.begin(); --upper; if(upper==-1) continue; if(maxlt[upper]>=i || upper == n-1) res.push_back(i); } } bool can_reach(int L, int R, int S, int D){ if(S>D) swap(S, D); auto i1 = lower_bound(res.begin(), res.end(), S); auto i2 = upper_bound(res.begin(), res.end(), D); return (i1 == i2); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...