Submission #698733

#TimeUsernameProblemLanguageResultExecution timeMemory
698733vjudge1New Home (APIO18_new_home)C++17
0 / 100
5079 ms101292 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define endl '\n' const int M = 3e5+5, MOD = 1e9+7; struct event {int x, t, y, a;}; bool operator<(event a, event b) {if (a.y == b.y) return a.a < b.a; return a.y < b.y;}; int k, size, ans[M]; multiset<int> st[M]; int query(int ind) { int mx = -1; for (int i = 1; i <= k; i++) { int mn = INT_MAX; auto it = st[k].lower_bound(ind); if (it != st[k].end()) mn = min(mn, *it - ind); if (it != st[k].begin()) mn = min(mn, ind - *prev(it)); mx = max(mx, mn); } return mx; } signed main() { cin.tie(0)->sync_with_stdio(0); int n, q; cin >> n >> k >> q; multiset<event> timeline; for(int i = 1; i <= n; i++) { int x, t, a, b; cin >> x >> t >> a >> b; timeline.insert({x, t, a, 0}); timeline.insert({x, t, b, 2}); } for (int i = 1; i <= q; i++) { int x, a; cin >> x >> a; timeline.insert({x, i, a, 1}); } for (auto [x, color, y, type]:timeline) { // cout << type << ": " << x << ' ' << color << ' ' << y << endl; if (type == 0) { st[color].insert(x); } else if (type == 2) { st[color].erase(st[color].find(x)); } else { ans[color] = query(x); } } for (int i = 1; i <= q; i++) cout << (ans[i]>1e9?-1:ans[i]) << endl; return 0; } /* 4 2 4 3 1 1 10 9 2 2 4 7 2 5 7 4 1 8 10 5 3 5 6 5 9 1 10 ------ 2 1 3 1 1 1 4 1 1 2 6 1 3 1 5 1 7 ------ 1 1 1 100000000 1 1 1 1 1 ------ */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...