#include<bits/stdc++.h>
using namespace std;
vector<int> l;
void initialize(vector<int> t, vector<int> h) {
l.resize(h.size(), -1);
auto dfs = [&](auto& dfs, int i, int j, int val, bool c = false) -> void {
//cout<< "(" << i << "; " << j << ") -> " << val << '\n';
if (i < 0 || i >= t.size() || j >= h.size() || h[j] >= t[i]) {
// cout<< "returned\n";
return;
}
if (i == 0 && l[j] == -1) {
int ind = j;
while (ind-1 > 0 && h[ind-1] < t[0]) {
l[ind-1] = l[j];
ind--;
}
l[j] = val;
}
dfs(dfs, i-1, j, val, true);
if (!c)
dfs(dfs, i+1, j, val);
dfs(dfs, i, j+1, val);
};
for (int i = 0; i < h.size(); i++)
if (l[i] == -1 && t[0] > h[i])
dfs(dfs, 0, i, i);
//cout<< "L :\n";
//for (int e : l)
// cout<< e << ' ';
//cout<< '\n';
}
bool can_reach(int ll, int r, int s, int d) {
if (d < s)
swap(d, s);
return (l[d] == s);
}
| # | 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... |