이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
// In The Name Of God
#include <bits/stdc++.h>
#define sqr(A) ((A) * (A))
#define F first
#define S second
#define MP make_pair
#define bsz __builtin_popcount
#define all(A) A.begin(), A.end()
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> pii;
const int MOD = 1e9 + 7;
const int MOD2 = 1e9 + 9;
const int PR = 727;
const int INF = INT_MAX;
const ll LINF = LLONG_MAX;
const int N = 5e5 + 20;
pii a[N];
ll n, ans;
void solve(int l, int r) {
if (r - l < 2) {
ans = max(ans, a[l].S);
return ;
}
int mid = (l + r) / 2;
solve(l, mid);
solve(mid, r);
ll sum = 0, res = 0;
for (int i = mid - 1; i >= l; i--) {
sum += a[i].S;
res = max(res, sum - (a[mid].F - a[i].F));
}
sum = 0;
for (int i = mid; i < r; i++) {
sum += a[i].S;
ans = max(ans, sum - (a[i].F - a[mid].F) + res);
}
}
int main() {
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i].F >> a[i].S;
sort(a, a + n);
solve(0, n);
cout << ans << endl;
}
# | 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... |