This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<long long, long long>
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<pii> ab(n);
for (int i = 0; i < n; i++) cin >> ab[i].first >> ab[i].second;
sort(ab.begin(), ab.end());
vector<int> a(n), b(n);
for (int i = 0; i < n; i++) {
a[i] = ab[i].first;
b[i] = ab[i].second;
}
vector<int> profit(n);
for (int i = 1; i < n; i++) {
profit[i] = a[i - 1] - a[i] + b[i];
}
vector<int> prefit(n + 1);
for (int i = 0; i < n; i++) prefit[i + 1] = prefit[i] + profit[i];
vector<int> smxp(n + 1);
smxp[n] = prefit[n];
for (int i = n - 1; i >= 0; i--) smxp[i] = max(smxp[i + 1], prefit[i]);
vector<int> rmxp(n + 1);
for (int i = 0; i < n + 1; i++) rmxp[i] = smxp[i] - prefit[i];
/*for (int i = 0; i < n; i++) cout << profit[i] << " ";
cout << "\n";
for (int i = 0; i < n + 1; i++) cout << prefit[i] << " ";
cout << "\n";
for (int i = 0; i < n + 1; i++) cout << smxp[i] << " ";
cout << "\n";
for (int i = 0; i < n + 1; i++) cout << rmxp[i] << " ";
cout << "\n";*/
int ans = 0;
for (int i = 0; i < n; i++) ans = max(ans, rmxp[i + 1] + b[i]);
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... |