#include "obstacles.h"
#include <bits/stdc++.h>
using namespace std;
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
vector<int> t, h;
map<pair<int, int>, bool> reach;
bool isveg(int x, int y) {
return x >= 0 && x < t.size() && y >= 0 && y < h.size() &&
t[x] > h[y];
}
void initialize(std::vector<int> T, std::vector<int> H) {
t = T;
h = H;
for(int i=0;i<h.size();++i) {
if(isveg(0, i)) {
queue<pair<int, int>> q;
map<pair<int, int>, bool> vis;
vis[{0, i}] = true;
q.push({0, i});
while(!q.empty()) {
auto f = q.front();
q.pop();
if(f.first == 0) {
reach[{i, f.second}] = true;
}
for(int j=0;j<4;++j) {
int nx = f.first + dx[j], ny = f.second + dy[j];
if(isveg(nx, ny) && !vis[{nx, ny}]) {
q.push({nx, ny});
vis[{nx, ny}] = true;
}
}
}
}
}
return;
}
bool can_reach(int L, int R, int S, int D) {
return reach[{S,D}];
}
| # | 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... |