#include<bits/stdc++.h>
using namespace std;
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
template <typename T> using ordset = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
/*
less<T> can be changed to:
1. less_equal<T>
2. greater<T>
ordered_set functions:
1. *(os.find_by_order(x)) -> return the value at position x (0 base)
2. os.order_of_key(x) -> return the number of elements less than x
*/
typedef long long ll;
#define int ll
#define endl '\n'
#define pb push_back
#define ff first
#define ss second
#define all(a) a.begin(),a.end()
const int MOD=1000000007;
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) (a*(b/gcd(a,b)))
#define fios(); ios_base::sync_with_stdio(0);cin.tie(0);
#define fraction(x); cout.unsetf(ios::floatfield); cout.precision(x); cout.setf(ios::fixed,ios::floatfield);
#define file(); freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
void solve(){
int n;
cin>>n;
vector<pair<int,int>> a(n); //{size,val}
for(int i=0;i<n;i++) cin>>a[i].ff>>a[i].ss;
sort(all(a));
int ans=0;
for(int ind=0;ind<n;ind++){
int s=a[ind].ss;
ans=max(ans,s);
for(int i=ind+1;i<n;i++){
s+=a[i].ss;
ans=max(ans,(s-(a[i].ff-a[ind].ff)));
}
}
cout<<ans<<endl;
return;
}
int32_t main(){
fios();
//file();
int t=1;
//cin>>t;
for(int tc=1;tc<=t;tc++){
//cout<<"Case "<<tc<<": ";
solve();
}
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... |