#include <bits/stdc++.h>
#define pb push_back
#define pf push_front
using namespace std;
#define F first
#define S second
typedef long long ll;
#define pii pair <int, int>
#define pll pair <ll, ll>
typedef long double ld;
const ll N = 5 * 1e5 + 100, M = 4096 + 10, len = 21, inf = 1e18;
const ll mod = 1e9 + 7;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
ll um(ll a, ll b){
return (1LL * a * b) % mod;
}
ll subr(ll a, ll b){
return ((1LL * a - b) % mod + mod) % mod;
}
pll cur[N];
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
ll n, ans = 0, sum = 0;
cin >> n;
vector <pll> vec;
for(ll i = 0, a, b; i < n; i++){
cin >> a >> b;
vec.pb({a, b});
}
sort(vec.begin(), vec.end());
set <pll> st;
for(ll i = 0; i < n; i++){
sum += vec[i].S;
//cout << vec[i].F << " "<< vec[i].S << " "<< sum - (vec[i].F - vec[0].F) << endl;
cur[i] = {sum - (vec[i].F - vec[0].F), i};
st.insert(cur[i]);
}
sum = 0;
for(ll i = 0; i < n; i++){
pll res = *st.rbegin();
ans = max(ans, res.F - sum + (vec[i].F-vec[0].F));
st.erase(cur[i]);
sum += vec[i].S;
}
cout << ans;
return 0;
}
# | 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... |