#include "obstacles.h"
#include <bits/stdc++.h>
using namespace std;
const int maxn = 200009;
#define st first
#define nd second
typedef long long ll;
typedef pair<int,int> pii;
int N , M;
bool czy[maxn];
int t[maxn][3];
bool czyp[maxn];
int find(int x , int poz)
{
if(t[x][poz] == x)return x;
return t[x][poz] = find(t[x][poz] , poz);
}
void union_(int a , int b ,int poz)
{
a = find(a,poz);
b = find(b,poz);
if(a == b)return ;
t[a][poz] = b;
}
void initialize(std::vector<int> T, std::vector<int> H)
{
N = T.size();
M = H.size();
for(int i = 0 ; i < M ; i++)for(int poz = 0 ; poz < N ; poz++)t[i][poz] = i;
for(int poz = 0 ; poz < N ; poz++)for(int i = 0 ; i < M ; i++)
{
czy[i] = 0;
if(T[poz] > H[i])
{
czy[i] = 1;
}
else continue;
if(poz == 1)
{
czyp[find(i,poz-1)] = 1;
}
if((i != 0) && (czy[i-1]))union_(i,i-1 , poz);
}
return;
}
bool can_reach(int L, int R, int S, int D)
{
return ((find(S,0) == find(D,0)) || (czyp[find(D,0)] && czyp[find(S,0)] && find(S,2) == find(D,2)));
}
# | 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... |