Submission #856114

#TimeUsernameProblemLanguageResultExecution timeMemory
856114ThylOneArt Exhibition (JOI18_art)C++14
100 / 100
402 ms32844 KiB
    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    typedef long long ll;
    struct art{
        ll height;
        ll beauty;
        void read(){
            cin>>height>>beauty;
        }
    };
    bool operator<(art&a, art&b){
        return a.height<b.height;
    }
    
    
    signed main(){
        int n;cin>>n;
        vector<art> arts(n);
        int pref[n];
        for(int i=0;i<n;i++){
            arts[i].read();
        }
        sort(arts.begin(),arts.end());
        int actSum=0;
        for(int i = 0;i<n;i++){
			actSum+=arts[i].beauty;
			pref[i]=actSum;
		}
		
		int partialSum[n];
		for(int i=0;i<n;i++){
			partialSum[i] = pref[i]-arts[i].height;
		}
		int maxi = partialSum[n-1];
		int maxiSuf[n];
		for(int i=n-1;i>=0;i--){
			maxi=max(maxi,partialSum[i]);
			maxiSuf[i] = maxi;
		}
		
        ll ans=0;
        for(int iDeb=0;iDeb<n;iDeb++){
            int toErase = 0;
            if(iDeb>0)toErase=pref[iDeb-1];
            ans = max(ans,maxiSuf[iDeb]+arts[iDeb].height-toErase);
        }
        cout<<ans<<endl;
    }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...