#include <bits/stdc++.h>
using namespace std;
const int N=6e5+1;
int mast[N];
int mash[N];
int n,m;
int pref_maxv[N];
int pref_min[N];
int am[N];
int p[N];
int sz[N];
bool vis[N];
void init(){
for(int i=1;i<=m*n;++i){
p[i]=i;
}
}
int par(int v){
if(p[v]==v){
return v;
}
p[v]=par(p[v]);
return p[v];
}
void merge(int u,int v){
if(sz[v]>sz[u]){
swap(u,v);
}
sz[u]+=sz[v];
p[v]=u;
}
void dsu(int u,int v){
u=par(u);
v=par(v);
if(u!=v){
merge(u,v);
}
}
void initialize(vector<int> t, vector<int> h) {
n=t.size();
m=h.size();
init();
for(int i=0;i<n;++i){
for(int j=0;j<m;++j){
if(t[i]>h[j]){
vis[i*m+j+1]=1;
if(vis[i*m+j]==1 && j!=0){
dsu(i*m+j,i*m+j+1);
}
if(i==0){
continue;
}
if(vis[(i-1)*m+j]){
dsu((i-1)*m+j+1,i*m+j+1);
}
}
}
}
}
bool can_reach(int l, int r, int s, int d) {
if(par(s+1)==par(d+1)){
return 1;
}
return 0;
}
| # | 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... |