제출 #162193

#제출 시각아이디문제언어결과실행 시간메모리
162193YojahuangArt Exhibition (JOI18_art)C++14
100 / 100
325 ms53432 KiB
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<ll,ll>;

const int MAXN = 500005;

vector<pii> G;
ll DP[2][MAXN];
bool vis[2][MAXN];
int n;

ll dp(int st, int id) {
	if(id >= n) return 0;
	else if(vis[st][id]) return DP[st][id];
	
	vis[st][id] = true;
	if(st == 0) {
		DP[st][id] = max(G[id].second - (G[id].first - G[id-1].first),G[id].second - (G[id].first - G[id-1].first) + dp(0,id+1));
	}
	else {
		DP[st][id] = max(G[id].second, G[id].second + dp(0,id+1));
	}
	return DP[st][id];
} 

int main(){
	ios::sync_with_stdio(0),cin.tie(0);
	ll a, b;
	while (cin >> n) {
		G.clear();
		memset(vis, 0, sizeof(vis));
		for (int i = 0; i < n; ++i) {
			cin >> a >> b;
			G.push_back(make_pair(a,b));
		}
		
		sort(G.begin(), G.end());
		ll res = G[0].second;
		
		for (int i = 0; i < n; ++i) {
			res = max(res, dp(1,i));
		}
		
		cout << res << '\n';
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...