Advertisement
Guest User

Untitled

a guest
Dec 18th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define int long long
  4. #define pii pair<int, int>
  5.  
  6. using namespace std;
  7.  
  8. const int maxn = 100000;
  9.  
  10. vector<vector<int> > t(4 * maxn + 4);
  11.  
  12. void build(int v, int vl, int vr, vector<vector<int> > &a) {
  13. if(vl == vr) {
  14. for(auto x : a[vl]) {
  15. t[v].push_back(x);
  16. }
  17. return;
  18. }
  19. int vm = (vl + vr) / 2;
  20. build(2 * v + 1, vl, vm, a);
  21. build(2 * v + 2, vm + 1, vr, a);
  22. t[v].resize(t[2 * v + 1].size() + t[2 * v + 2].size());
  23. merge(t[2 * v + 1].begin(), t[2 * v + 1].end(), t[2 * v + 2].begin(), t[2 * v + 2].end(), t[v].begin());
  24. }
  25.  
  26. int sum(int v, int vl, int vr, int l, int r, int x, int y) {
  27. if(vl > r || vr < l) {
  28. return 0;
  29. }
  30. if(l == vl && r == vr) {
  31. return ((upper_bound(t[v].begin(), t[v].end(), y) - lower_bound(t[v].begin(), t[v].end(), x)));
  32. }
  33. int vm = (vl + vr) / 2;
  34. return sum(2 * v + 1, vl, vm, l, min(r, vm), x, y) + sum(2 * v + 2, vm + 1, vr, max(l, vm + 1), r, x, y);
  35. }
  36.  
  37. signed main() {
  38. int n;
  39.  
  40. cin >> n;
  41.  
  42. vector<vector<int> > a(maxn + 1);
  43.  
  44. for(int i = 0; i < n; i++) {
  45. int x, t;
  46. cin >> x >> t;
  47. a[t].push_back(x);
  48. }
  49.  
  50. for(auto x : a) {
  51. sort(x.begin(), x.end());
  52. }
  53.  
  54. build(0ll, 0ll, maxn, a);
  55.  
  56. int m;
  57. cin >> m;
  58.  
  59. for(int i = 0; i < m; i++) {
  60.  
  61. int q, p, rad, k;
  62.  
  63. cin >> q >> p >> rad >> k;
  64.  
  65. int l = q;
  66. int r = maxn + 1;
  67.  
  68. while(r - l > 1) {
  69.  
  70. int m = (r + l) / 2;
  71. int q1 = sum(0ll, 0ll, maxn, q, m, p - rad, p + rad);
  72.  
  73. if(q1 < k) {
  74. l = m;
  75. } else {
  76. r = m;
  77. }
  78. }
  79.  
  80. if(sum(0ll, 0ll, maxn, q, r, p - rad, p + rad) >= k) {
  81. cout << -1 << endl;
  82. continue;
  83. }
  84.  
  85. cout << r << endl;
  86. }
  87.  
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement