Advertisement
Fahim_7861

Sparse Table

Mar 30th, 2020
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.83 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. typedef long long ll;
  7.  
  8. const ll Max=1e5;
  9.  
  10.  
  11. ll P[Max][20];
  12.  
  13. void buildSparseTable(ll ara[], ll n)
  14. {
  15. ll a,b;
  16.  
  17. for(ll i=0; i<n; i++)
  18. P[i][0]=ara[i];
  19.  
  20. for(ll j=1; (1<<j)<=n; j++)
  21. {
  22. for(ll i=0; (i+(1<<j)-1) <n; i++)
  23. {
  24. a=P[i][j-1];
  25.  
  26. b=P[i+(1<< (j-1))][j-1];
  27.  
  28. P[i][j]=min(a,b);
  29. }
  30. }
  31.  
  32.  
  33. }
  34.  
  35. ll queury(ll L,ll R)
  36. {
  37. ll k=log2(R-L+1);
  38.  
  39.  
  40. return min(P[L][k],P[R-(1<<k)+1][k]);
  41.  
  42. }
  43. int main()
  44. {
  45. ll n;
  46.  
  47. cin>>n;
  48.  
  49. ll ara[n+1];
  50.  
  51. for(ll i=0; i<n; i++)
  52. {
  53. cin>>ara[i];
  54. }
  55.  
  56. buildSparseTable(ara,n);
  57.  
  58. ll q,l,r;
  59. cin>>q;
  60.  
  61.  
  62. while(q--)
  63. {
  64.  
  65. cin>>l>>r;
  66.  
  67. cout<<queury(l,r)<<endl;
  68. }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement