Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define int long long
- #define pii pair<int, int>
- using namespace std;
- const int maxn = 100000;
- vector<vector<int> > t(4 * maxn + 4);
- void build(int v, int vl, int vr, vector<vector<int> > &a) {
- if(vl == vr) {
- for(auto x : a[vl]) {
- t[v].push_back(x);
- }
- return;
- }
- int vm = (vl + vr) / 2;
- build(2 * v + 1, vl, vm, a);
- build(2 * v + 2, vm + 1, vr, a);
- t[v].resize(t[2 * v + 1].size() + t[2 * v + 2].size());
- merge(t[2 * v + 1].begin(), t[2 * v + 1].end(), t[2 * v + 2].begin(), t[2 * v + 2].end(), t[v].begin());
- }
- int sum(int v, int vl, int vr, int l, int r, int x, int y) {
- if(vl > r || vr < l) {
- return 0;
- }
- if(l == vl && r == vr) {
- return ((upper_bound(t[v].begin(), t[v].end(), y) - lower_bound(t[v].begin(), t[v].end(), x)));
- }
- int vm = (vl + vr) / 2;
- 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);
- }
- signed main() {
- int n;
- cin >> n;
- vector<vector<int> > a(maxn + 1);
- for(int i = 0; i < n; i++) {
- int x, t;
- cin >> x >> t;
- a[t].push_back(x);
- }
- for(auto x : a) {
- sort(x.begin(), x.end());
- }
- build(0ll, 0ll, maxn, a);
- int m;
- cin >> m;
- for(int i = 0; i < m; i++) {
- int q, p, rad, k;
- cin >> q >> p >> rad >> k;
- int l = q;
- int r = maxn + 1;
- while(r - l > 1) {
- int m = (r + l) / 2;
- int q1 = sum(0ll, 0ll, maxn, q, m, p - rad, p + rad);
- if(q1 < k) {
- l = m;
- } else {
- r = m;
- }
- }
- if(sum(0ll, 0ll, maxn, q, r, p - rad, p + rad) >= k) {
- cout << -1 << endl;
- continue;
- }
- cout << r << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement