#include "obstacles.h"
#include<bits/stdc++.h>
using namespace std;
const int N = 6e5+4;
struct Dsu{
int t[N];
void build(int n){
for (int i=0; i<n; i++)
t[i] = i;
}
int find(int x){
if (x == t[x]) return x;
return t[x] = find(t[x]);
}
void join(int a,int b){
t[find(a)] = find(b);
}
} dsu;
int n,m;
void initialize(vector<int> T,vector<int> H){
n = T.size(), m = H.size();
dsu.build(n*m);
for (int i=0; i<n; i++)
for (int j=0; j<m; j++){
if (T[i] <= H[j]) continue;
if (i+1<n && T[i+1] > H[j])
dsu.join(i*m+j, i*m+m+j);
if (j+1<m && T[i] > H[j+1])
dsu.join(i*m+j, i*m+j+1);
}
}
bool can_reach(int L, int R, int S, int D) {
return dsu.find(S) == dsu.find(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... |