제출 #1255268

#제출 시각아이디문제언어결과실행 시간메모리
1255268bonicKnapsack (NOI18_knapsack)C++20
12 / 100
1 ms328 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

bool cmp(array<int, 3>&a, array<int, 3>&b) {
    if (a[0] * b[1] > a[1] * b[0]) {
        return true;
    }
    else if (a[0] * b[1] == a[1] * b[0]) {
        return a[0] <= b[0];
    }
    else return false;
}

signed main() {
    int s, n; cin >> s >> n; vector<array<int, 3>> A;
    for (int i = 0; i < n; i++) {
        int u, v, w; cin >> u >> v >> w;
        A.push_back({u, v, w});
    }
    sort(A.begin(), A.end(), cmp); int sum = 0;
    for (int i = 0; i < n; i++) {
        // cout << A[i][0] << " " << A[i][1] << " " << A[i][2] << "\n";
        int x = s / A[i][1];
        x = min(x, A[i][2]);
        sum += A[i][0] * x; s -= A[i][1] * x;
    }
    cout << sum;
}
#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...