#include "obstacles.h"
#include <bits/stdc++.h>
using namespace std;
int N,M;
bool arr[3][200000],vis[3][200000];
int arr2[3][200000];
void dfs(int i,int j,int br)
{
vis[i][j]=true;
arr2[i][j]=br;
if(i>0 && arr[i-1][j]==true && vis[i-1][j]==false)
dfs(i-1,j,br);
if(j>0 && arr[i][j-1]==true && vis[i][j-1]==false)
dfs(i,j-1,br);
if(i<N-1 && arr[i+1][j]==true && vis[i+1][j]==false)
dfs(i+1,j,br);
if(j<M-1 && arr[i][j+1]==true && vis[i][j+1]==false)
dfs(i,j+1,br);
}
void initialize(vector<int> T, vector<int> H)
{
N=T.size();
M=H.size();
if(T.size()<=3)
{
for(int i=0;i<N;i++)
{
for(int j=0;j<H.size();j++)
{
if(T[i]>H[j])
{
arr[i][j]=true;
}
else
arr[i][j]=false;
}
}
}
else
{
for(int j=0;j<H.size();j++)
{
if(T[N-1]>H[j])
{
arr[0][j]=true;
}
else
arr[0][j]=false;
}
N=1;
}
int br=1;
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
if(vis[i][j]==false && arr[i][j]==true)
{
dfs(i,j,br);
br++;
}
}
}
return;
}
bool can_reach(int L, int R, int S, int D)
{
if(arr2[0][S]==arr2[0][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... |