#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace std;
using namespace __gnu_pbds;
#define ord_set tree < int , null_type , less , rb_tree_tag , tree_order_statistics_node_update>
#define ll unsigned long long
#define rep(i,a,b) for (int i = a; i < b; i++)
#define rrep(i,a,b) for (int i = a; i >= b; i--)
void N() {cout<<"NO\n";}
void Y() {cout<<"YES\n";}
void isTrue(bool ope) {
if (ope) Y();else N();
}
int MD = 1e9+7;
ll MX_VL = 1e18;
int MX_ll = 2e9;
vector<int> T;
vector<int> H;
vector<int> pref;
vector<int> pref2;
vector<int> pnt;
vector<int> cnc2;
int m;
int n;
void initialize(std::vector<int> Tp, std::vector<int> Hp) {
T = Tp;
H = Hp;
m = Hp.size();
n = Tp.size();
pref.resize(m, 0);
pref2.resize(m, 0);
pref2[0] = H[0] >= 2;
pref[0] = Tp.back() <= Hp[0];
rep(i, 0, m) {
if (H[i] == 0) pnt.push_back(i);
if (H[i] >= 2) {
cnc2.push_back(i);
if (i != 0) pref2[i] = pref2[i - 1] + 1;
} else if (i!=0) pref2[i] = pref2[i - 1];
}
rep(i, 1, m) {
pref[i] = (Tp.back() <= Hp[i]) + pref[i - 1];
}
}
bool can_reach(int L, int R, int S, int D) {
if (cnc2.empty()) return true;
auto i1 = upper_bound(cnc2.begin(),cnc2.end(),D);
auto tt = upper_bound(cnc2.begin(),cnc2.end(),S);
bool ok = true;
int x = (tt-cnc2.begin())-1;
rep(i,0,cnc2.size()) {
if (cnc2[i] >= S && cnc2[i] <= D) {
ok=false;
break;
}
if (cnc2[i] > D) break;
}
if (ok && pref2[D]==pref2[S]) return true;
if (pref2[D]==pref2[S])return true;
if (pnt.empty()) return false;
int l = i1 != cnc2.begin() ? *prev(i1,1) : -1;
int r = i1 != cnc2.end() ? *i1 : m;
int l2 = tt == cnc2.begin() ? -1 : *prev(tt,1);
int r2 = tt != cnc2.end() ? *tt : m;
int j = lower_bound(pnt.begin(),pnt.end(),l2) != pnt.end() ? *lower_bound(pnt.begin(),pnt.end(),l2) : m+1;
int i = lower_bound(pnt.begin(),pnt.end(),l) != pnt.end() ? *lower_bound(pnt.begin(),pnt.end(),l) : m+1;
return j <= r2 && i <= r && pref[S]==pref[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... |