제출 #711954

#제출 시각아이디문제언어결과실행 시간메모리
711954thimote75Art Exhibition (JOI18_art)C++14
100 / 100
993 ms52464 KiB

#include <bits/stdc++.h>

using namespace std;

#define num long long
#define ndata vector<num>

struct VBO {
    map<num, num> sv_by_s;

    num _get_e(num size) {
        auto u = sv_by_s.find(size);
        if (u == sv_by_s.end()) return 0;

        num res = (*u).second;
        sv_by_s.erase(size);
        return res;
    }
    void insert (num size, num value) {
        num old = _get_e(size);

        sv_by_s.insert({ size, old + value });
    }
};

int main () {
    int nbArt;
    cin >> nbArt;

    VBO data;
    for (int iA = 0; iA < nbArt; iA ++) {
        num a, b;
        cin >> a >> b;

        data.insert(a, b);
    }

    ndata size;
    ndata value;
    for (auto d : data.sv_by_s) {
        size .push_back(d.first);
        value.push_back(d.second);
    }

    nbArt = size.size();

    num max_v = 0;
    num sum_v = 0;
    num max_a = 0;
    
    for (int iA = 0; iA < nbArt; iA ++) {
        max_v = max(max_v, size[iA] - sum_v);
        num answer = sum_v + value[iA] - size[iA] + max_v;
        max_a = max(max_a, answer);
        
        sum_v += value[iA];
    }

    cout << max_a;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...