Submission #394005

#TimeUsernameProblemLanguageResultExecution timeMemory
39400579brueNew Home (APIO18_new_home)C++14
12 / 100
2380 ms43960 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; struct Mart{ int x, y, t; bool on; /// location, type, time Mart(int x, int y, int t, bool on): x(x), y(y), t(t), on(on){} bool operator<(const Mart &r)const{ return t<r.t; } }; struct Query{ int x, t, idx; Query(){} Query(int x, int t, int idx): x(x), t(t), idx(idx){} bool operator<(const Query &r)const{ return t<r.t; } }; int n, q, k; vector<Mart> vec; vector<Query> qvec; multiset<int> mst[402]; int ans[300002]; int main(){ scanf("%d %d %d", &n, &k, &q); for(int i=1; i<=n; i++){ int x, t, a, b; scanf("%d %d %d %d", &x, &t, &a, &b); vec.push_back(Mart(x, t, a, 1)); vec.push_back(Mart(x, t, b+1, 0)); } sort(vec.begin(), vec.end()); for(int i=1; i<=q; i++){ int l, y; scanf("%d %d", &l, &y); qvec.push_back(Query(l, y, i)); } sort(qvec.begin(), qvec.end()); int pnt = 0; for(int i=0; i<q; i++){ while(pnt < 2*n && vec[pnt].t <= qvec[i].t){ Mart tmp = vec[pnt++]; if(tmp.on) mst[tmp.y].insert(tmp.x); else mst[tmp.y].erase(mst[tmp.y].find(tmp.x)); } for(int j=1; j<=k; j++){ auto it = mst[j].lower_bound(qvec[i].x); int tmp = INT_MAX; if(it != mst[j].end()) tmp = min(tmp, *it - qvec[i].x); if(it != mst[j].begin()) tmp = min(tmp, qvec[i].x - *prev(it)); ans[qvec[i].idx] = max(ans[qvec[i].idx], tmp); } } for(int i=1; i<=q; i++) printf("%d\n", ans[i] == INT_MAX ? -1 : ans[i]); }

Compilation message (stderr)

new_home.cpp: In function 'int main()':
new_home.cpp:32:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   32 |     scanf("%d %d %d", &n, &k, &q);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
new_home.cpp:35:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   35 |         scanf("%d %d %d %d", &x, &t, &a, &b);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
new_home.cpp:43:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   43 |         scanf("%d %d", &l, &y);
      |         ~~~~~^~~~~~~~~~~~~~~~~
#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...