Submission #715765

#TimeUsernameProblemLanguageResultExecution timeMemory
715765ovidiush11Art Exhibition (JOI18_art)C++14
100 / 100
571 ms24176 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long int main() { ll n; cin>>n; vector<pair<ll,ll>> a(n); for(ll i = 0;i < n;i++)cin>>a[i].first>>a[i].second; sort(a.begin(),a.end()); a.push_back({1e15+1,0}); vector<pair<ll,ll>> v; for(ll i = 0;i < n;i++) { if(a[i].first == a[i+1].first)a[i+1].second += a[i].second; else v.push_back(a[i]); } n = v.size(); vector<pair<ll,ll>> p(n); p[0] = {v[0].second,0ll}; for(ll i = 1;i < n;i++)p[i] = {p[i-1].first + v[i].second - (v[i].first - v[i-1].first),i}; sort(p.begin(),p.end(),greater<pair<ll,ll>>()); ll j = 0,i = 0,ans = 0,k = 0; while(i < n) { ll mx,pos; while(p[j].second < i)j++; mx = p[j].first;pos = p[j].second; ans = max(ans,mx+k); for(i = i+1;i <= pos;i++) { k += v[i].first - v[i-1].first - v[i-1].second; ans = max(ans,mx+k); } k += v[i].first - v[i-1].first - v[i-1].second; } 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...