#include using namespace std; using ll =long long; #include using namespace atcoder; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); ll N,Q; cin>>N>>Q; vector P(N); vector IP(N); for(int i=0;i>P[i]; P[i]--; IP[P[i]]=i; } vector>> query(N); for(int q=0;q>L>>R; L--; query[L].push_back({R,q}); } priority_queue,vector>,greater>> PQ; vector> LZ(N); for(ll i=N-1;i>=0;i--){ while(!PQ.empty()){ auto [n,id]=PQ.top(); if(n>P[i])break; PQ.pop(); LZ[i].emplace_back(id); } PQ.push({P[i],i}); } vector AN(Q); fenwick_tree FW(N); for(int i=N-1;i>=0;i--){ for(auto id:LZ[i])FW.add(id,1); for(auto [R,id]:query[i]){ AN[id]=FW.sum(i,R); } } for(int i=0;i