Submission #872532

# Submission time Handle Problem Language Result Execution time Memory
872532 2023-11-13T10:07:18 Z theghostking Knapsack (NOI18_knapsack) C++14
49 / 100
21 ms 32600 KB
#include <bits/stdc++.h>
using namespace std;

#define int long long

const int MAX_W = 2005;

int dp[MAX_W][MAX_W];

int search(int i, int remW, vector<pair<int, int>>& kp, int total) {
    if (i == total || remW == 0) return 0;
    if (dp[i][remW] != -1) return dp[i][remW];

    if (kp[i].first <= remW) {
        return dp[i][remW] = max(search(i + 1, remW, kp, total), search(i + 1, remW - kp[i].first, kp, total) + kp[i].second);
    } else {
        return dp[i][remW] = search(i + 1, remW, kp, total);
    }
}

void initializeDP() {
    for (int i = 0; i < MAX_W; ++i) {
        for (int j = 0; j < MAX_W; ++j) {
            dp[i][j] = -1;
        }
    }
}

signed main() {
    initializeDP();

    int s, n;
    cin >> s >> n;

    vector<pair<int, int>> arr[MAX_W];

    for (int i = 0; i < n; i++) {
        int v, w, k;
        cin >> v >> w >> k;
        w--;

        arr[w].push_back({v, k});
    }

    int total = 0;
    vector<pair<int, int>> kp;

    for (int i = 0; i < MAX_W; i++) {
        sort(arr[i].begin(), arr[i].end());
        reverse(arr[i].begin(), arr[i].end());

        int lft = MAX_W;
        int sz = arr[i].size();
        int pt = 0;

        while (lft > 0 && pt != sz) {
            int dec = min(lft, arr[i][pt].second);
            lft -= dec;

            for (int j = 0; j < dec; j++) {
                int val = arr[i][pt].first;
                kp.push_back({i + 1, val});
            }

            pt++;
        }

        total += MAX_W - lft;
    }

    cout << search(0, s, kp, total) << '\n';

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 7 ms 32092 KB Output is correct
2 Correct 5 ms 32092 KB Output is correct
3 Correct 5 ms 31948 KB Output is correct
4 Correct 4 ms 32092 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 31836 KB Output is correct
2 Correct 6 ms 31888 KB Output is correct
3 Correct 4 ms 31836 KB Output is correct
4 Correct 5 ms 31836 KB Output is correct
5 Correct 4 ms 31832 KB Output is correct
6 Correct 6 ms 31832 KB Output is correct
7 Correct 6 ms 31836 KB Output is correct
8 Correct 6 ms 31836 KB Output is correct
9 Correct 6 ms 31836 KB Output is correct
10 Correct 6 ms 31956 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 31836 KB Output is correct
2 Correct 6 ms 31888 KB Output is correct
3 Correct 4 ms 31836 KB Output is correct
4 Correct 5 ms 31836 KB Output is correct
5 Correct 4 ms 31832 KB Output is correct
6 Correct 6 ms 31832 KB Output is correct
7 Correct 6 ms 31836 KB Output is correct
8 Correct 6 ms 31836 KB Output is correct
9 Correct 6 ms 31836 KB Output is correct
10 Correct 6 ms 31956 KB Output is correct
11 Correct 4 ms 31836 KB Output is correct
12 Correct 8 ms 32056 KB Output is correct
13 Correct 4 ms 31836 KB Output is correct
14 Correct 5 ms 31836 KB Output is correct
15 Correct 4 ms 31908 KB Output is correct
16 Correct 16 ms 31952 KB Output is correct
17 Correct 6 ms 31832 KB Output is correct
18 Correct 7 ms 31848 KB Output is correct
19 Correct 8 ms 31976 KB Output is correct
20 Correct 8 ms 31948 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 32092 KB Output is correct
2 Correct 5 ms 32092 KB Output is correct
3 Correct 5 ms 31948 KB Output is correct
4 Correct 4 ms 32092 KB Output is correct
5 Correct 7 ms 31836 KB Output is correct
6 Correct 6 ms 31888 KB Output is correct
7 Correct 4 ms 31836 KB Output is correct
8 Correct 5 ms 31836 KB Output is correct
9 Correct 4 ms 31832 KB Output is correct
10 Correct 6 ms 31832 KB Output is correct
11 Correct 6 ms 31836 KB Output is correct
12 Correct 6 ms 31836 KB Output is correct
13 Correct 6 ms 31836 KB Output is correct
14 Correct 6 ms 31956 KB Output is correct
15 Correct 4 ms 31836 KB Output is correct
16 Correct 8 ms 32056 KB Output is correct
17 Correct 4 ms 31836 KB Output is correct
18 Correct 5 ms 31836 KB Output is correct
19 Correct 4 ms 31908 KB Output is correct
20 Correct 16 ms 31952 KB Output is correct
21 Correct 6 ms 31832 KB Output is correct
22 Correct 7 ms 31848 KB Output is correct
23 Correct 8 ms 31976 KB Output is correct
24 Correct 8 ms 31948 KB Output is correct
25 Correct 4 ms 31836 KB Output is correct
26 Correct 21 ms 32092 KB Output is correct
27 Correct 5 ms 31836 KB Output is correct
28 Correct 4 ms 31908 KB Output is correct
29 Incorrect 5 ms 32600 KB Output isn't correct
30 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 7 ms 32092 KB Output is correct
2 Correct 5 ms 32092 KB Output is correct
3 Correct 5 ms 31948 KB Output is correct
4 Correct 4 ms 32092 KB Output is correct
5 Correct 7 ms 31836 KB Output is correct
6 Correct 6 ms 31888 KB Output is correct
7 Correct 4 ms 31836 KB Output is correct
8 Correct 5 ms 31836 KB Output is correct
9 Correct 4 ms 31832 KB Output is correct
10 Correct 6 ms 31832 KB Output is correct
11 Correct 6 ms 31836 KB Output is correct
12 Correct 6 ms 31836 KB Output is correct
13 Correct 6 ms 31836 KB Output is correct
14 Correct 6 ms 31956 KB Output is correct
15 Correct 4 ms 31836 KB Output is correct
16 Correct 8 ms 32056 KB Output is correct
17 Correct 4 ms 31836 KB Output is correct
18 Correct 5 ms 31836 KB Output is correct
19 Correct 4 ms 31908 KB Output is correct
20 Correct 16 ms 31952 KB Output is correct
21 Correct 6 ms 31832 KB Output is correct
22 Correct 7 ms 31848 KB Output is correct
23 Correct 8 ms 31976 KB Output is correct
24 Correct 8 ms 31948 KB Output is correct
25 Correct 4 ms 31836 KB Output is correct
26 Correct 21 ms 32092 KB Output is correct
27 Correct 5 ms 31836 KB Output is correct
28 Correct 4 ms 31908 KB Output is correct
29 Incorrect 5 ms 32600 KB Output isn't correct
30 Halted 0 ms 0 KB -