이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
pair<int, int> a[500005];
struct Segtree {
int val[2000005], lazy[2000005];
void push(int id, int l, int r) {
val[id] += lazy[id];
if(l != r) lazy[id*2] += lazy[id], lazy[id*2+1] += lazy[id];
lazy[id] = 0;
}
void update(int id, int l, int r, int u, int v, int nw) {
if(l > v || r < u) return;
if(l >= u && r <= v) {
val[id] += nw;
if(l != r) {
lazy[id*2] += nw;
lazy[id*2+1] += nw;
}
return;
}
int mid = (l + r) / 2;
update(id*2, l, mid, u, v, nw);
update(id*2+1, mid + 1, r, u, v, nw);
val[id] = max(val[id*2], val[id*2+1]);
}
} tree;
void solve() {
cin >> n;
int res = 0;
for (int i = 1; i <= n; i++) cin >> a[i].first >> a[i].second, res = max(res, a[i].second);
sort(a+1,a+1+n);
for (int i = 1; i <= n; i++) {
tree.update(1, 1, n, 1, i-1, a[i].second - (a[i].first - a[i-1].first));
tree.update(1, 1, n, i, i, a[i].second);
res = max(res, tree.val[1]);
}
cout << res;
}
signed main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int t = 1;
// cin >> t;
while(t--) {
solve();
}
}
# | 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... |