Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define ll long long int
  5. #define rep(i,n) for(i=0;i<n;i++)
  6.  
  7. long long int ar1[100000],ar2[100000];
  8.  
  9. /*struct valpos
  10. {
  11. long long int val,pos;
  12. };*/
  13.  
  14. ll find_low(ll ar[], ll given, ll siz)
  15. {
  16. ll posmid = siz/2;
  17. ll mid = ar[posmid];
  18.  
  19. //valpos ret;
  20.  
  21. while(1)
  22. {
  23. //cout<<mid<<"*\n";
  24.  
  25. if(mid<given)
  26. {
  27. if(posmid == siz - 1)
  28. {
  29. return -1;
  30. }
  31.  
  32. else
  33. {
  34. posmid = posmid + (siz - posmid)/2;
  35. mid = ar[posmid];
  36. }
  37. }
  38.  
  39.  
  40. else if(mid == given)
  41. {
  42. return posmid;
  43. }
  44.  
  45. else if(mid>given)
  46. {
  47. if(posmid==0)
  48. {
  49. return posmid;
  50. }
  51.  
  52. else if(ar[posmid - 1]<given)
  53. {
  54. return posmid;
  55. }
  56.  
  57. else if(ar[posmid - 1]==given)
  58. {
  59. return posmid - 1;
  60. }
  61.  
  62. else
  63. {
  64. posmid = posmid/2;
  65. mid = ar[posmid];
  66. }
  67. }
  68. }
  69. }
  70.  
  71. ll find_high(ll ar[], ll given, ll siz)
  72. {
  73. ll posmid = siz/2;
  74. ll mid = ar[posmid];
  75.  
  76. //valpos ret;
  77.  
  78. while(1)
  79. {
  80. //cout<<mid<<"**\n";
  81.  
  82. if(mid>given)
  83. {
  84. if(posmid == 0)
  85. {
  86. return -1;
  87. }
  88.  
  89. else
  90. {
  91. posmid = posmid/2;
  92. mid = ar[posmid];
  93. }
  94. }
  95.  
  96.  
  97. else if(mid == given)
  98. {
  99. return posmid;
  100. }
  101.  
  102. else if(mid<given)
  103. {
  104. if(posmid == siz-1)
  105. {
  106. return posmid;
  107. }
  108.  
  109. else if(ar[posmid + 1]>given)
  110. {
  111. return posmid;
  112. }
  113.  
  114. else if(ar[posmid + 1]==given)
  115. {
  116. return posmid + 1;
  117. }
  118.  
  119. else
  120. {
  121. posmid = posmid +(siz-posmid)/2;
  122. mid = ar[posmid];
  123. }
  124. }
  125. }
  126. }
  127.  
  128. int main()
  129. {
  130.  
  131. int t;
  132. cin>>t;
  133.  
  134. ll i,j,k,posl,posh;
  135.  
  136. for(i=0;i<t;i++)
  137. {
  138. ll n,q;
  139. cin>>n>>q;
  140.  
  141. cout<<"Case "<<i+1<<":"<<"\n";
  142.  
  143. for(j = 0;j<n;j++)
  144. {
  145. cin>>ar1[j];
  146. }
  147.  
  148. for(j = 0;j<q;j++)
  149. {
  150. ll sl,sh;
  151.  
  152. cin>>sl>>sh;
  153.  
  154. posl = find_low(ar1,sl,n);
  155.  
  156. if(posl==-1)
  157. {
  158. cout<<"0\n";
  159. }
  160.  
  161. else
  162. {
  163.  
  164. posh = find_high(ar1,sh,n);
  165.  
  166. if(posh==-1)
  167. {
  168. cout<<n-1-posl+1<<"\n";
  169. }
  170.  
  171. else
  172. {
  173. cout<<posh-posl+1 <<"\n";
  174. }
  175. }
  176. }
  177. }
  178.  
  179. return 0;
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement