제출 #78006

#제출 시각아이디문제언어결과실행 시간메모리
78006SaboonCloud Computing (CEOI18_clo)C++14
100 / 100
448 ms2432 KiB
#include <iostream>
#include <vector>
#include <algorithm>

#define PB push_back

using namespace std;

typedef long long ll;

const ll INF = 1e15;
const int maxn = 1e5 + 100;

struct Event {
    int cores;
    int freq;
    int value;
    int id;

    Event(int cores_, int freq_, int value_, int id_):
        cores(cores_), freq(freq_), value(value_), id(id_) {}

    bool operator < (const Event& other) const {
        if (freq != other.freq)
            return freq > other.freq;
        return id < other.id;
    }
};

int n, m;
vector <Event> events;
vector <ll> dp;

int main() {
    int cores_available = 0;

    cin >> n;
    for (int i = 0; i < n; i++) {
        int cores, freq, price;
        cin >> cores >> freq >> price;
        cores_available += cores;
        events.push_back(Event(cores, freq, price, -1));
    }
    cin >> m;
    for (int i = 0; i < m; i++) {
        int cores, freq, reward;
        cin >> cores >> freq >> reward;
        events.PB (Event (cores, freq, reward, i));
    }

    sort (events.begin(), events.end());

    dp.resize (cores_available + 1, -INF);
    dp[0] = 0;

    for (const Event& evt : events) {
        if (evt.id == -1) {
            for (int i = cores_available; i >= evt.cores; i--)
                dp[i] = max(dp[i], dp[i - evt.cores] - evt.value);
        }
        else {
            for (int i = 0; i <= cores_available - evt.cores; i++)
                dp[i] = max(dp[i], dp[i + evt.cores] + evt.value);
        }
    }

    ll result = -1;
    for (int i = 0; i <= cores_available; i++)
        result = max (result, dp[i]);

    cout << result << "\n";

    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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...