Submission #1049775

#TimeUsernameProblemLanguageResultExecution timeMemory
1049775vjudge1Art Exhibition (JOI18_art)C++17
100 / 100
296 ms16076 KiB
#pragma GCC optimize("O3")
#pragma GCC target("avx2")
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <time.h>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <bits/stdc++.h>

#define speed ios_base::sync_with_stdio(0), cin.tie(0)
#define TxtIO freopen("points.in","r",stdin); freopen("points.out","w",stdout);
using namespace std;
const int mod = 998244353;
#define ll long long
const int N=2e5+5;

//mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

ll binpow (ll a, ll n) {
	ll res = 1;
	while (n) {
		if (n & 1)
			res = res * a;
		a = a * a;
		n >>= 1;
	}
	return res;
}




void fcn(){
	ll n;
	cin>>n;
	pair <ll,ll> a[n+3];
	ll dp[n+3],dp2[n+3];
	dp[0]=0;
	for (int i=1; i<=n; i++){
		cin>>a[i].first>>a[i].second;
	}
	
	sort(a+1,a+1+n);
	
	for (int i=1; i<=n; i++){	
		dp[i]=dp[i-1]+a[i].second;
	}
	
	dp2[0]=-1e18;
	ll ans=0;
	for (int i=1; i<=n; i++){
		dp2[i]=max(dp2[i-1],a[i].first-dp[i-1]);
	}
	
	for (int i=n; i>0; i--){
		ans=max(ans,dp[i]+dp2[i]-a[i].first);
	}
	
	cout<<ans;
	
	
	
	
	
	
	
}                        

int main(){
	//srand(time(0));
	//fflush(stdout);
//	freopen("bridges.in","r",stdin); freopen("bridges.out","w",stdout);
	
	
//	speed;
	ll T=1;
//	cin>>T;
	for (int i=1; i<=T; i++){
		fcn();	
	}
}




 

/*

1
2 3
4 5
6 7


*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...