# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1164995 | pinbu | Advertisement 2 (JOI23_ho_t2) | C++20 | 1635 ms | 29056 KiB |
#include <bits/stdc++.h>
using namespace std;
const int N = 500005;
const long long oo = 1e18;
int n;
pair<int, int> a[N], b[N];
map<pair<int, int>, vector<int>> m1, m2;
vector<int> idas, idbs;
void solve(void) {
cin >> n;
for (int i = 1, x, e; i <= n; i++) {
cin >> x >> e;
a[i] = {x, x + e}; b[i] = {x, x - e};
m1[a[i]].emplace_back(i);
m2[b[i]].emplace_back(i);
}
sort(a + 1, a + 1 + n, [&] (const pair<int, int> &X, const pair<int, int> &Y) {
return X.first < Y.first || (X.first == Y.first && X.second >= Y.second);
});
sort(b + 1, b + 1 + n, [&] (const pair<int, int> &X, const pair<int, int> &Y) {
return X.first < Y.first || (X.first == Y.first && X.second >= Y.second);
});
for (int i = n; i; i--) {
while (!idas.empty() && a[i].second >= a[idas.back()].second) idas.pop_back();
idas.emplace_back(i);
}
reverse(begin(idas), end(idas));
for (int i = 1; i <= n; i++) {
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |