Submission #217701

#TimeUsernameProblemLanguageResultExecution timeMemory
217701VEGAnn새 집 (APIO18_new_home)C++14
12 / 100
2044 ms27336 KiB
#include <bits/stdc++.h> #define all(x) x.begin(),x.end() #define sz(x) ((int)x.size()) #define PB push_back #define pii pair<int,int> #define ft first #define sd second #define MP make_pair #define MP3(a,b,c) MP(MP(a,b),c) #define pi3 pair<pii,int> using namespace std; typedef long long ll; const int N = 300100; const int M = 200100; const int K = 410; const int oo = 2e9; vector<pi3> qr; multiset<int> st[K]; multiset<int>::iterator ite; int ans[N], n, k, q; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); // freopen("in.txt","r",stdin); cin >> n >> k >> q; for (int i = 0; i < n; i++){ int x, t, a, b; cin >> x >> t >> a >> b; qr.PB(MP3(a, -t, x)); qr.PB(MP3(b + 1, -t, -x)); } for (int i = 0; i < q; i++){ int y, l; cin >> l >> y; qr.PB(MP3(y, l, i)); } sort(all(qr)); for (pi3 cr : qr) if (cr.ft.sd < 0){ int tp = -cr.ft.sd; if (cr.sd < 0) st[tp].erase(st[tp].find(-cr.sd)); else st[tp].insert(cr.sd); } else { int res = 0; for (int tp = 1; tp <= k; tp++){ if (!sz(st[tp])){ res = oo; break; } int cur = oo; ite = st[tp].upper_bound(cr.ft.sd); if (ite != st[tp].end()) cur = min(cur, (*ite) - cr.ft.sd); if (ite != st[tp].begin()) cur = min(cur, cr.ft.sd - (*prev(ite))); res = max(res, cur); } ans[cr.sd] = (res == oo ? -1 : res); } for (int i = 0; i < q; i++) cout << ans[i] << '\n'; return 0; }
#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...