#include <bits/stdc++.h>
#include "obstacles.h"
using namespace std;
#define ll long long
int n,m,cnt[200005],cnt1[200005];
bool check[200005];
void initialize(vector<int> t,vector<int> h){
n=t.size();
m=h.size();
for(int i=0;i<m;i++){
check[i]=false;
}
for(int i=0;i<m;i++){
if(h[i]==0){
check[i]=true;
int r=i+1,l=i-1;
while(true){
if(l<0){
break;
}
if(h[l]<=2){
check[l]=true;
l--;
}
else{
break;
}
}
while(true){
if(r>=0){
break;
}
if(h[r]<=2){
check[r]=true;
r++;
}
else{
break;
}
}
i=r;
}
}
for(int i=0;i<m;i++){
if(t[0]>h[i]){
if(i==0){
cnt[i]=0;
continue;
}
cnt[i]=cnt[i-1];
}
else{
if(i==0){
cnt[i]=1;
continue;
}
cnt[i]=cnt[i-1]+1;
}
}
for(int i=0;i<m;i++){
if(t[2]>h[i]){
if(i==0){
cnt1[i]=0;
continue;
}
cnt1[i]=cnt1[i-1];
}
else{
if(i==0){
cnt1[i]=1;
continue;
}
cnt1[i]=cnt1[i-1]+1;
}
}
}
bool can_reach(int l,int r,int s,int d){
if(cnt[s]==cnt[d]){
return true;
}
if(cnt1[s]==cnt1[d]&&check[s]&&check[d]){
return true;
}
return false;
}
# | 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... |