Submission #1287320

#TimeUsernameProblemLanguageResultExecution timeMemory
1287320eri16Art Exhibition (JOI18_art)C++20
50 / 100
1096 ms20048 KiB
#include <bits/stdc++.h>
using namespace std;

void solve_2_n(vector <pair<long long,long long>> v){

    long long best=LLONG_MIN;

    long long n=v.size();

    for(long long mask=0; mask<(1<<n); mask++){
        long long S=0;
        long long amin=-1,amax=0;
        for(long long i=0;i<n;i++){
            if(mask & (1<<i)){
                if (amin==-1){amin=v[i].first;}
                amin=min(amin,v[i].first);
                amax=max(amax,v[i].first);
                S+=v[i].second;
            }
        }
        best=max(best,S+amin-amax);
    }

    cout<<best<<"\n";
    
}

void solve_2d_dp(vector <pair<long long,long long>> v){
    
    long long n=v.size();
    
    long long dp[n][n];
    
    sort(v.begin(),v.end());
    
    long long psum[n+1];
    
    psum[0]=0;
    
    for (int i=1; i<=n; i++){
        psum[i]=psum[i-1]+v[i-1].second;
    }
    
    long long best=0;
    
    for (int i=0; i<n; i++){
        for (int j=i; j<n; j++){
            best=max(best,psum[j+1]-psum[i]+v[i].first-v[j].first);
        }
    }
    
    cout<<best<<"\n";
    
    
    
    
}



int main(){
    
    long long n,tm1,tm2;
    
    cin>>n;
    
    vector <pair<long long,long long>> v;
    
    for (long long i=0; i<n; i++){
        cin>>tm1>>tm2;
        v.push_back({tm1,tm2});
    }
    
    //solve_2_n(v);
    solve_2d_dp(v);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...