이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const int MX = 5e5 + 5;
int X[MX], E[MX];
int N;
int getId(int x) {
auto it = lower_bound(X + 1, X + 1 + N, x) - X;
return it;
}
struct stMin {
int t[4 * MX];
void update(int v, int l, int r, int pos, int val) {
if(pos > r || pos < l) return;
if(l == r) {
t[v] = min(t[v], val);
return;
}
int mid = (l + r) >> 1;
update(v * 2 + 0, l, mid + 0, pos, val);
update(v * 2 + 1, mid + 1, r, pos, val);
t[v] = min(t[v * 2 + 0], t[v * 2 + 1]);
}
int query(int v, int l, int r, int ql, int qr) {
if(qr < l || ql > r) return 2e9;
if(ql <= l && qr >= r) return t[v];
int mid = (l + r) >> 1;
return min(query(v * 2 + 0, l, mid + 0, ql, qr),
query(v * 2 + 1, mid + 1, r, ql, qr));
}
} st;
struct stMax {
int t[4 * MX];
void update(int v, int l, int r, int pos, int val) {
if(pos > r || pos < l) return;
if(l == r) {
t[v] = max(t[v], val);
return;
}
int mid = (l + r) >> 1;
update(v * 2 + 0, l, mid + 0, pos, val);
update(v * 2 + 1, mid + 1, r, pos, val);
t[v] = max(t[v * 2 + 0], t[v * 2 + 1]);
}
int query(int v, int l, int r, int ql, int qr) {
if(qr < l || ql > r) return 0;
if(ql <= l && qr >= r) return t[v];
int mid = (l + r) >> 1;
return max(query(v * 2 + 0, l, mid + 0, ql, qr),
query(v * 2 + 1, mid + 1, r, ql, qr));
}
} tt;
int main() {
cin.tie(0); ios_base::sync_with_stdio(0);
for(int i = 0; i < 4 * MX; i++) st.t[i] = 2e9;
cin >> N;
vector<pair<int,int>> v;
for(int i = 1; i <= N; i++) {
cin >> X[i] >> E[i];
v.push_back({E[i], X[i]});
}
sort(X + 1, X + 1 + N);
sort(v.rbegin(), v.rend());
int ans = 0;
for(auto [e, x] : v) {
if(st.query(1, 1, N, getId(x), N) <= x - e) continue;
if(tt.query(1, 1, N, 1, getId(x)) >= x + e) continue;
st.update(1, 1, N, getId(x), x - e);
tt.update(1, 1, N, getId(x), x + e);
ans++;
}
cout << ans << '\n';
}
# | 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... |