Advertisement
hkshakib

Untitled

Mar 17th, 2020
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int mx = 1e5+10;
  4. int arr[mx];
  5. int tree[4*mx];
  6. void init1(int node,int b,int e)
  7. {
  8. if(b==e)
  9. {
  10. tree[node] = arr[b];
  11. return;
  12. }
  13. int left = node * 2;
  14. int right = node *2+1;
  15. int mid = (b+e)/2;
  16. init1(left,b,mid);
  17. init1(right,mid+1,e);
  18. tree[node]=max(tree[left],tree[right]);
  19. }
  20. int query1(int node,int b,int e,int i,int j)
  21. {
  22. if(i>e || j<b)
  23. return 0;
  24. if(b>=i && e<=j)
  25. return tree[node];
  26. int left = node * 2;
  27. int right = node * 2 + 1;
  28. int mid = (b+e)/2;
  29. int p = query1(left,b,mid,i,j);
  30. int q = query1(right,mid+1,e,i,j);
  31. return max(p,q);
  32. }
  33. void init(int node,int b,int e)
  34. {
  35. if(b==e)
  36. {
  37. tree[node] = arr[b];
  38. return;
  39. }
  40. int left = node * 2;
  41. int right = node *2+1;
  42. int mid = (b+e)/2;
  43. init(left,b,mid);
  44. init(right,mid+1,e);
  45. tree[node]=min(tree[left],tree[right]);
  46. }
  47. int query2(int node,int b,int e,int i,int j)
  48. {
  49. if(i>e || j<b)
  50. return 0;
  51. if(b>=i && e<=j)
  52. return tree[node];
  53. int left = node * 2;
  54. int right = node * 2 + 1;
  55. int mid = (b+e)/2;
  56. int p = query2(left,b,mid,i,j);
  57. int q = query2(right,mid+1,e,i,j);
  58. return min(p,q);
  59. }
  60. int main()
  61. {
  62. int t,cnt=1;
  63. scanf("%d",&t);
  64. while(t--)
  65. {
  66. int n,d;
  67. scanf("%d%d",&n,&d);
  68. for(int i=0; i<n; i++)
  69. scanf("%d",&arr[i]);
  70.  
  71. init1(1,0,n-1);
  72. init(1,0,n-1);
  73. int ans =-1;
  74. for(int i=0; i<=n-d; i++)
  75. {
  76. ans = max(ans,abs(query1(1,0,n-1,i,i+d-1)-query2(1,0,n-1,i,i+d-1)));
  77. }
  78. printf("Case %d: ",cnt++);
  79. printf("%d",ans);
  80. }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement