Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- vector<int>v;
- vector<vector<int> >ST;
- int log2(int x)
- {
- int res = 0;
- while(x)
- {
- x>>=1;
- res++;
- }
- return res;
- }
- void precompute(int n)
- {
- int c = log2(n);
- ST = vector< vector<int> >(n,vector<int>(c));
- for(int i=0; i<n; i++)
- {
- ST[i][0]=v[i];
- }
- for(int i=1; i<c; i++)
- {
- for(int j=0; j<(n-(1<<(i-1))); j++)
- {
- ST[j][i]=max(ST[j][i-1],ST[j+(1<<(i-1))][i-1]);
- }
- }
- }
- int RMQ(int i,int j)
- {
- int l = log2(j-i+1);
- return max(ST[i][l-1],ST[j-(1<<l-1)][l-1]);
- }
- int main()
- {
- int n,m;
- cin>>n>>m;
- for(int i=0; i<n; i++)
- {
- int h;
- cin>>h;
- v.push_back(h);
- }
- precompute(n);
- int cnt =0;
- for(int i=0; i<m; i++)
- {
- int a,b;
- cin>>a>>b;
- if(RMQ(a,b-2)<=v[a-1])
- cnt++;
- }
- cout<<cnt<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement