Submission #104109

#TimeUsernameProblemLanguageResultExecution timeMemory
104109dimash241New Home (APIO18_new_home)C++17
12 / 100
2762 ms27540 KiB
# include <stdio.h> # include <bits/stdc++.h> #define _USE_MATH_DEFINES_ #define ll long long #define ld long double #define Accepted 0 #define pb push_back #define mp make_pair #define sz(x) (int)(x.size()) #define every(x) x.begin(),x.end() #define F first #define S second #define For(i,x,y) for (int i = x; i <= y; i ++) #define FOr(i,x,y) for (int i = x; i >= y; i --) #define SpeedForce ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0) // ROAD to... Red using namespace std; inline double Time() {return (clock() * 1.0) / CLOCKS_PER_SEC; } inline bool isvowel (char c) { c = tolower(c); if (c == 'a' || c == 'e' || c == 'i' || c == 'y' || c == 'o' || c == 'u') return 1; return 0; } const double eps = 0.000001; const ld pi = acos(-1); const int maxn = 1e7 + 9; const int mod = 1e9 + 7; const ll MOD = 1e18 + 9; const ll INF = 1e18 + 123; const int inf = 2e9 + 11; const int mxn = 1e6 + 9; const int N = 6e5 + 123; const int M = 22; const int pri = 997; const int Magic = 2101; const int dx[] = {-1, 0, 1, 0}; const int dy[] = {0, -1, 0, 1}; int n, q, k; int x[N], t[N], a[N], b[N]; int l[N], y[N]; int ans[N]; vector < int > pp; inline void solve () { for (int i = 1; i <= n; i ++) pp.pb(a[i]), pp.pb(b[i]); for (int i = 1; i <= q; i ++) { pp.pb(y[i]); } sort(every(pp)); pp.resize(unique(every(pp)) - pp.begin()); vector < vector < pair < int, int > > > add(pp.size() + 2); vector < vector < pair < int, int > > > del(pp.size() + 2); vector < vector < pair < int, int > > > query(pp.size() + 2); multiset < int > bl[k + 1]; for (int i = 1; i <= k; i ++) bl[i].clear(); for (int i = 1; i <= n; i ++) { a[i] = lower_bound(every(pp), a[i]) - pp.begin(); b[i] = lower_bound(every(pp), b[i]) - pp.begin(); add[a[i]].pb(mp(x[i], t[i])); del[b[i]].pb(mp(x[i], t[i])); } for (int i = 1; i <= q; i ++) { y[i] = lower_bound(every(pp), y[i]) - pp.begin(); query[y[i]].pb(mp(l[i], i)); } for (int vv = 0; vv < pp.size(); vv ++) { for (auto it : add[vv]) bl[it.S].insert(it.F); for (auto q : query[vv]) { int res = 0; for (int w = 1; w <= k; w ++) { if (bl[w].empty()) { res = -1; break; } int cur = inf; auto l = bl[w].upper_bound(q.F); if (l != bl[w].end()) { cur = min(cur, *l - q.F); } if (l != bl[w].begin()) { --l; cur = min(cur, q.F - *l); } // cout << cur << ' ' << w << '\n'; res = max(res, cur); } ans[q.S] = res; } for (auto it : del[vv]) bl[it.S].erase(bl[it.S].find(it.F)); } for (int i = 1; i <= q; i ++) cout << ans[i] << '\n'; } int main () { SpeedForce; cin >> n >> k >> q; for (int i = 1; i <= n; i ++) { cin >> x[i] >> t[i] >> a[i] >> b[i]; } for (int i = 1; i <= q; i ++) { cin >> l[i] >> y[i]; } if (k < 500) { solve(); exit(0); } return Accepted; } // B...a D....

Compilation message (stderr)

new_home.cpp: In function 'void solve()':
new_home.cpp:77:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int vv = 0; vv < pp.size(); vv ++) {
                   ~~~^~~~~~~~~~~
#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...