Submission #407175

#TimeUsernameProblemLanguageResultExecution timeMemory
407175victoriadArt Exhibition (JOI18_art)C++14
100 / 100
221 ms32584 KiB
#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> #include <utility> #include <queue> #include <map> #include <iomanip> #include <stack> #include <fstream> using namespace std; vector<pair<long long int,int> >dp; void maximo(vector<pair<long long int,long long int> >&p,vector<long long int>&ps){ long long m=0; for(int k=0;k<(int)p.size();k++){ dp[k].first=p[k].second; dp[k].second=k; for(int i=k-1;i>=0;i--){ if(dp[k].first<(ps[k+1]-ps[dp[i].second]-(p[k].first-p[dp[i].second].first))){ dp[k].first=ps[k+1]-ps[dp[i].second]-(p[k].first-p[dp[i].second].first); dp[k].second=dp[i].second; } else{ break; } } m=max(m,dp[k].first); } cout<<m; } int main(){ ios::sync_with_stdio(false); cin.tie(NULL); int n; cin>>n; vector<pair<long long int,long long int> >p(n); vector<long long int>ps(n+1); for(int i=0;i<n;i++){ cin>>p[i].first>>p[i].second; } sort(p.begin(),p.end()); dp.assign(n,make_pair(0,0)); ps[0]=0; for(int i=1;i<n+1;i++){ ps[i]=ps[i-1]+p[i-1].second; } maximo(p,ps); 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...