#include #include #define inf 1000000001 using namespace std; ifstream f("date.in"); int n,m,arb[450001],poz,val,start,finish,maxim,minim,arb1[450001],a[100001],r[100001]; void actualizare(int nod,int st,int dr) { int mij; if(st==dr) { arb[nod]=val; arb1[nod]=val; return; } mij=(st+dr)/2; if(poz<=mij) { actualizare(2*nod,st,mij); } else { actualizare(2*nod+1,mij+1,dr); } arb[nod]=max(arb[2*nod],arb[2*nod+1]); arb1[nod]=min(arb1[2*nod],arb1[2*nod+1]); } void interogare(int nod,int st,int dr) { int mij; if(start<=st && dr<=finish) { if(maxim>n>>m; for(i=1;i<=n;i++) { r[i]=-1; cin>>x; a[i]=x; poz=i; val=x; actualizare(1,1,n); } for(i=1;i<=n;i++) { for(j=i+1;j<=n;j++) { start=i; finish=j; minim=inf; maxim=0; interogare(1,1,n); if(((sau(i,j)-si(i,j))-(maxim-minim))>=m) { for(k=i;k<=j;k++) { if(r[k]