#include #include #include #include #include #include #include #include using namespace std; vectorv; const int maxn=2e5; int segment[maxn*3]; void build_tree(int L, int R, int pos){ if(L==R){ segment[pos]=v[L]; } else{ int middle=(L+R)/2; build_tree(L, middle, pos*2); build_tree(middle+1, R, pos*2+1); segment[pos]=min(segment[2*pos], segment[2*pos+1]); } } ///l r i l r j l r int query(int L, int R, int pos, int i, int j){ if(i<=L and j>=R){ return segment[pos]; } if(R>n>>l>>k; for(int i=0; i>a; v.push_back(a); } build_tree(0, n-1, 1); int counter=0; for(int i=0; i= v.size()) { continue; } if(query(0, n-1, 1, i+1, i+k)>=l){ counter++; } } cout<