제출 #483986

#제출 시각아이디문제언어결과실행 시간메모리
483986ak2006Art Exhibition (JOI18_art)C++14
0 / 100
0 ms204 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using vb = vector<bool>; using vvb = vector<vb>; using vi = vector<int>; using vvi = vector<vi>; using vl = vector<ll>; using vvl = vector<vl>; using vc = vector<char>; using vvc = vector<vc>; using vs = vector<string>; const ll mod = 1e9 + 7,inf = 1e18; #define pb push_back #define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); void setIO() { fast; } int main() { setIO(); int n; cin>>n; vvl a(n + 1,vl(2)); for (int i = 1;i<=n;i++)cin>>a[i][0]>>a[i][1]; sort(a.begin() + 1,a.end()); vl pre(n + 1),dp(n + 1); ll ans = 0; for (int i = 1;i<=n;i++)pre[i] = pre[i - 1] + a[i][1]; multiset<ll>s; for (int i = 1;i<=n;i++){ dp[i] = pre[i] - a[i][0] + a[1][0]; if (!s.empty()){ dp[i] = max(dp[i],pre[i] - a[i][0] + *(--s.end())); } ans = max(ans,dp[i]); // for (int j = i - 1;j>=0;j--){ // dp[i] = max(dp[i],pre[i] - pre[j] - a[i][0] + a[j + 1][0]); // ans = max(ans,dp[i]); // } if (i != n)s.insert(-pre[i] + a[i + 1][1]); } cout<<ans; 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...