#include "obstacles.h"
#include <cassert>
#include <cstdio>
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ff first
#define ss second
#define pb push_back
#define endl "\n"
int n = 0, m = 0;
const int N = 200005;
set<int> se;
vector<int> t, h;
void initialize(std::vector<int> T, std::vector<int> H){
t = T; h = H;
n = t.size(); m = h.size();
for (int j = 0; j < m; j++){
if (t[n - 1] <= h[j]){
se.insert(j);
}
}
}
bool can_reach(int L, int R, int s, int d){
if (s > d){
swap(s, d);
}
if (s + 1 == d){
return 1;
}
int l = -1;
if (s + 1 < m && t[0] > h[s + 1]){ // s-is marjvniv
l = s + 1;
}else if (t[0] > h[s]){ // s-is dabla
l = s;
}else if (s - 1 >= 0 && t[0] > h[s - 1]){ // s-is marcxniv
l = s - 1;
}
int r = -1;
if (d - 1 >= 0 && t[0] > h[d - 1]){ // d-is marcxiv
r = d - 1;
}else if (t[0] > h[d]){ // d-is dabla
r = d;
}else if (d + 1 < m && t[0] > h[d + 1]){ // d-is marjvniv
r = d + 1;
}
if (l == -1 || r == -1){
return 0;
}
auto itl = se.lower_bound(l);
auto itr = se.lower_bound(r);
if (itl == itr){
return 1;
}
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |