Advertisement
hkshakib

Untitled

Feb 18th, 2020
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. vector<int>v;
  4. vector<vector<int> >ST;
  5. int log2(int x)
  6. {
  7. int res = 0;
  8. while(x)
  9. {
  10. x>>=1;
  11. res++;
  12. }
  13. return res;
  14. }
  15. void precompute(int n)
  16. {
  17. int c = log2(n);
  18. ST = vector< vector<int> >(n,vector<int>(c));
  19. for(int i=0; i<n; i++)
  20. {
  21. ST[i][0]=v[i];
  22. }
  23. for(int i=1; i<c; i++)
  24. {
  25. for(int j=0; j<(n-(1<<(i-1))); j++)
  26. {
  27. ST[j][i]=max(ST[j][i-1],ST[j+(1<<(i-1))][i-1]);
  28. }
  29. }
  30. }
  31. int RMQ(int i,int j)
  32. {
  33. int l = log2(j-i+1);
  34. return max(ST[i][l-1],ST[j-(1<<l-1)][l-1]);
  35. }
  36. int main()
  37. {
  38. int n,m;
  39. cin>>n>>m;
  40. for(int i=0; i<n; i++)
  41. {
  42. int h;
  43. cin>>h;
  44. v.push_back(h);
  45. }
  46. precompute(n);
  47. int cnt =0;
  48. for(int i=0; i<m; i++)
  49. {
  50. int a,b;
  51. cin>>a>>b;
  52. if(RMQ(a,b-2)<=v[a-1])
  53. cnt++;
  54. }
  55. cout<<cnt<<endl;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement