# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
49052 | 2018-05-21T14:32:30 Z | BThero | New Home (APIO18_new_home) | C++17 | 5000 ms | 50312 KB |
// Why am I so stupid? :c #include <bits/stdc++.h> #define pb push_back #define mp make_pair #define all(x) (x).begin(), (x).end() #define fi first #define se second typedef long long ll; using namespace std; const int MAXN = 3e5+5; const int INF = 1e9; struct shop { int x, tp, l, r; shop() { x = tp = l = r = 0; } } arr[MAXN]; struct que { int x, t, id; que() { x = t = id = 0; } } req[MAXN]; vector < pair <int, int> > addEl[MAXN * 2]; vector < pair <int, int> > delEl[MAXN * 2]; multiset < pair <int, int> > ms; vector <int> mm[MAXN]; int rl[MAXN * 2]; int ans[MAXN]; int mn[MAXN]; int n, k, q; int m, m2; void compressX() { vector <int> vv; for (int i = 1; i <= n; ++i) { vv.pb(arr[i].x); } for (int i = 1; i <= q; ++i) { vv.pb(req[i].x); } sort(all(vv)); vv.resize(unique(all(vv)) - vv.begin()); m2 = vv.size(); for (int i = 1, ps; i <= n; ++i) { ps = upper_bound(all(vv), arr[i].x) - vv.begin(); rl[ps] = arr[i].x; arr[i].x = ps; } for (int i = 1, ps; i <= q; ++i) { ps = upper_bound(all(vv), req[i].x) - vv.begin(); rl[ps] = req[i].x; req[i].x = ps; } } bool cmp(que a, que b) { return a.x < b.x; } bool cmp2(shop a, shop b) { return a.x < b.x; } void solve() { scanf("%d %d %d", &n, &k, &q); for (int i = 1; i <= n; ++i) { scanf("%d %d", &arr[i].x, &arr[i].tp); scanf("%d %d", &arr[i].l, &arr[i].r); } for (int i = 1; i <= q; ++i) { scanf("%d %d", &req[i].x, &req[i].t); req[i].id = i; } compressX(); sort(arr + 1, arr + n + 1, cmp2); sort(req + 1, req + q + 1, cmp); for (int i = 1; i <= n; ++i) { mm[arr[i].tp].pb(arr[i].x); } bool ex = 0; for (int i = 1; i <= k; ++i) { if (mm[i].empty()) { ex = 1; } } if (ex) { for (int i = 1; i <= q; ++i) { printf("-1\n"); } return; } for (int i = 1; i <= k; ++i) { for (int j = 1; j <= q; ++j) { int cur = INF; for (auto it : mm[i]) { cur = min(cur, abs(rl[it] - rl[req[j].x])); } ans[req[j].id] = max(ans[req[j].id], cur); } } for (int i = 1; i <= q; ++i) { if (ans[i] == INF) { ans[i] = -1; } printf("%d\n", ans[i]); } } int main() { #ifdef BThero freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif // BThero int tt = 1; while (tt--) { solve(); } return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 38 ms | 43732 KB | Output is correct |
2 | Incorrect | 35 ms | 43752 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 38 ms | 43732 KB | Output is correct |
2 | Incorrect | 35 ms | 43752 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Execution timed out | 5101 ms | 50312 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Execution timed out | 5012 ms | 50312 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 38 ms | 43732 KB | Output is correct |
2 | Incorrect | 35 ms | 43752 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 38 ms | 43732 KB | Output is correct |
2 | Incorrect | 35 ms | 43752 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |