hkshakib

Untitled

Feb 3rd, 2020
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define sc(in) scanf("%d",&in)
  3. #define mx 1000005
  4. ll tree[mx*3],arr[mx];
  5. using namespace std;
  6. void init(int node, int strt, int fin)
  7. {
  8. if(strt==fin)
  9. {
  10. // cout<<node<<endl;
  11. tree[node] = arr[strt];
  12. return arr[strt];
  13. }
  14. int left = node*2;
  15. int right = node*2 +1;
  16. int mid = (strt+fin)/2;
  17. init(left,strt,mid);
  18. init(right,mid+1,fin);
  19.  
  20. tree[node] = min(tree[left],tree[right]);
  21.  
  22. }
  23. int mincal(int node, int b, int e, int i,int j)
  24. {
  25. if(j<b || i>e)
  26. return INT_MAX;
  27. if(i<=b && j>=e)
  28. {
  29. //cout<<tree[node]<<endl;
  30. return tree[node];
  31. }
  32.  
  33. int left = node*2;
  34. int right = node*2 +1;
  35. int mid = (b+e)/2;
  36. int q1 = mincal(left,b,mid,i,j);
  37. int q2 = mincal(right,mid+1,e,i,j);
  38. //cout<<node<<endl;
  39. int x = min(q1,q2);
  40. return x;
  41.  
  42. }
  43. int main()
  44. {
  45.  
  46. int n,q;
  47. scanf("%d",&n);
  48. for(int i = 1; i<=n; i++)
  49. {
  50. sc(arr[i]);
  51. }
  52. init(1,1,n);
  53.  
  54. int a,b;
  55. cin>>q;
  56. while(q--)
  57. {
  58. scanf("%d %d",&a,&b);
  59. int ans = mincal(1,1,n,a+1,b+1);
  60. printf("%d\n",ans);
  61. }
  62. return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment