Submission #1004654

#TimeUsernameProblemLanguageResultExecution timeMemory
1004654zh_hArt Exhibition (JOI18_art)C++17
100 / 100
785 ms21004 KiB
#include <bits/stdc++.h>
#define lint long long int
#define pb push_back
using namespace std;



int main(){

    lint n;
    cin >> n;
    vector<pair<lint, lint>> v;
    for(lint i = 0; i < n; i ++){
        lint temp1, temp2;
        cin >> temp1 >> temp2;
        v.pb({temp1, temp2});
    }
    sort(v.begin(), v.end());

    // cout << endl;
    // for(auto i : v){
        // cout << i.first << " " << i.second << endl;
    // }
    // cout << endl;

    lint curSUM = v[0].second;
    lint globalSUM = v[0].second;
    lint curMAX = v[0].first, curMIN = v[0].first;
    // int globalMAX = v[0].second, globalMIN = v[0].second;
    lint EndIndex;

    // cout << curSUM << " " << globalSUM << endl;
    for(int i = 1; i < n; i ++){
        // curSUM = max(v[i], curSUM + v[i]);
        
        if(v[i].second > (curSUM + v[i].second - v[i].first + curMAX)){ //* what about the equal case?
            curSUM = v[i].second;
            curMIN = v[i].first;
            curMAX = v[i].first;
        }
        else{
            curSUM += (v[i].second-v[i].first+curMAX);
            curMAX = v[i].first;
        }

        if(curSUM > globalSUM){
            globalSUM = curSUM;
            EndIndex = i;
        }

        // cout << curSUM << " " << globalSUM << endl;
    }

    cout << globalSUM;

    // lint StartIndex = EndIndex;

    // while(true){
    //     globalSUM -= v[StartIndex].second;
    //     if(globalSUM == 0){break;}
    //     StartIndex--;
    // }


    
    // cout << endl;
    // cout << StartIndex << " " << EndIndex;

    // int n;
    // cin >> n;
    // vector<int> v;
    // for(int i = 0; i < n; i ++){
    //     int temp;
    //     cin >> temp;
    //     v.pb(temp);
    // }

    // int curMax = v[0], globalMax = v[0], EndIndex;

    // for(int i = 1; i < n; i ++){
    //     curMax = max(v[i], v[i] + curMax);

    //     if(curMax > globalMax){
    //         globalMax = curMax;
    //         EndIndex = i;
    //     }
    // }
    // // cout << "globalMax = " << globalMax << endl;
    // int StartIndex = EndIndex;
    // // cout << StartIndex << endl;
    // while(globalMax > 0){
    //     // cout << StartIndex << " " << globalMax << " ";
    //     globalMax -= v[StartIndex];
    //     // cout << globalMax << endl;
    //     StartIndex--;
    // }
    // // cout << endl;
    // StartIndex++;

    // for(int i = StartIndex; i <= EndIndex; i ++){
    //     cout << v[i] << " ";
    // }
    // cout << endl;

}

Compilation message (stderr)

art.cpp: In function 'int main()':
art.cpp:28:31: warning: variable 'curMIN' set but not used [-Wunused-but-set-variable]
   28 |     lint curMAX = v[0].first, curMIN = v[0].first;
      |                               ^~~~~~
art.cpp:30:10: warning: variable 'EndIndex' set but not used [-Wunused-but-set-variable]
   30 |     lint EndIndex;
      |          ^~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...