Guest User

Untitled

a guest
Oct 19th, 2017
492
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define fast_read ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  3. #define ll long long
  4. #define SIZE 1000001
  5. #define F 40
  6. using namespace std;
  7. ll n,a[SIZE],tree[F * SIZE],root[SIZE],nxt,lft[F * SIZE],rgt[F * SIZE],q,i,j,d,rt,sz = 0;
  8. string ty;
  9. void update(int v,int v2,int l,int r,int in) {
  10. if (l == r) {
  11. tree[v] = tree[v2] + 1;
  12. return;
  13. }
  14. int m = (l + r)/2;
  15. if (in <= m) {
  16. rgt[v] = rgt[v2];
  17. lft[v] = ++nxt;
  18. update(lft[v],lft[v2],l,m,in);
  19. }
  20. else {
  21. lft[v] = lft[v2];
  22. rgt[v] = ++nxt;
  23. update(rgt[v],rgt[v2],m+1,r,in);
  24. }
  25. tree[v] = tree[lft[v]] + tree[rgt[v]];
  26. }
  27. ll getsum(int v,int l,int r,int li,int ri) {
  28. if (l > r || l > ri || r < li)return 0;
  29. if (l >= li && r <= ri)return tree[v];
  30. int m = (l + r) / 2;
  31. return getsum(lft[v],l,m,li,ri) + getsum(rgt[v],m + 1,r,li,ri);
  32. }
  33. int main()
  34. {
  35. fast_read
  36. cin>>n;
  37. cin>>q;
  38. for (i = 1;i<=n;i++) {
  39. cin>>a[i];
  40. sz = max(a[i],sz);
  41. }
  42. for (i = 1;i<=n;i++) {
  43. root[++rt] = ++nxt;
  44. update(root[rt],root[rt - 1],1,sz,a[i]);
  45. }
  46. /*while (q--) {
  47. cin>>i>>j>>d;
  48. cout<<getsum(root[i],1,sz,j,d)<<endl;
  49. }*/
  50. while (q--) {
  51. cin>>i>>j>>d;
  52. i++;
  53. j++;
  54. ll li,ri,ans = 0;
  55. li = 1;
  56. ri = d;
  57. while (li <= ri) {
  58. ll m = (li + ri) / 2;
  59. if (getsum(root[j],1,sz,m + 1,ri) - getsum(root[i - 1],1,sz,m + 1,ri) > 0) {
  60. if (li == ri) {
  61. ans = li;
  62. break;
  63. }
  64. else li = m + 1;
  65. }
  66. else if (getsum(root[j],1,sz,li,m) - getsum(root[i - 1],1,sz,li,m) > 0) {
  67. if (li == ri) {
  68. ans = li;
  69. break;
  70. }
  71. else ri = m;
  72. }
  73. else break;
  74. }
  75. cout<<ans<<endl;
  76. }
  77. return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment