#include<bits/stdc++.h>
using namespace std;
typedef pair <int, int> pii;
typedef vector <int> vi;
typedef long long ll;
#define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; i++)
#define FORD(i, a, b) for (int i = (a), _b = (b); i >= _b; i--)
#define fi first
#define se second
#define pb push_back
#define ALL(a) (a).begin(), (a).end()
#define SZ(a) (int)(a.size())
const int N = 5e5 + 5;
const int oo = 2e9;
const int MOD = 1e9 + 7;
const ll INF = 1e18;
int n;
array <ll, 2> artwork[N];
ll pre[N];
ll st[4 * N], lazy[4 * N];
void build(int id, int l, int r){
if(l == r){
st[id] = - pre[l - 1] + artwork[l][0];
return;
}
int mid = (l + r) >> 1;
build(id << 1, l, mid);
build(id << 1 | 1, mid + 1, r);
st[id] = max(st[id << 1], st[id << 1 | 1]);
}
ll get(int id, int l, int r, int u, int v){
if(l > v || r < u) return - 1e18;
if(l >= u && r <= v) return st[id];
int mid = (l + r) >> 1;
return max(get(id << 1, l, mid, u, v), get(id << 1 | 1, mid + 1, r, u, v));
}
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define taskname "kieuoanh"
if(fopen(taskname".inp", "r")){
freopen(taskname".inp", "r", stdin);
freopen(taskname".out", "w", stdout);
}
cin >> n;
FOR(i, 1, n) cin >> artwork[i][0] >> artwork[i][1];
sort(artwork + 1, artwork + 1 + n);
FOR(i, 1, n) pre[i] = pre[i - 1] + artwork[i][1];
// if(n <= 5e3){
// ll ans = - 1e18;
// FOR(i, 1, n){
// ll S = 0;
// ll mn = 1e18, mx = 0;
// FOR(j, i, n){
// S+= artwork[j][1];
// mn = min(mn, artwork[j][0]);
// mx = max(mx, artwork[j][0]);
// ans = max(ans, S - (mx - mn));
// }
// }
// cout << ans;
// return 0;
// }
build(1, 1, n);
ll ans = - 1e18;
FOR(i, 1, n){
ans = max(ans, - artwork[i][0] + pre[i] + get(1, 1, n, 1, i));
}
cout << ans;
return 0;
}
Compilation message (stderr)
art.cpp: In function 'int main()':
art.cpp:49:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
49 | freopen(taskname".inp", "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
art.cpp:50:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
50 | freopen(taskname".out", "w", stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 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... |