Submission #812667

# Submission time Handle Problem Language Result Execution time Memory
812667 2023-08-07T09:58:08 Z AliVu Knapsack (NOI18_knapsack) C++17
73 / 100
1000 ms 3668 KB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define el '\n'
const int maxn = 2e3 + 3, N = 1e5 + 5;
int dp[2][maxn], W[N], V[N], K[N];

void Solve() {
    int S, n; cin >> S >> n;
    for(int i = 1; i <= n; i++) {
        cin >> V[i] >> W[i] >> K[i];
        K[i] = min(K[i], maxn);
    }
    for(int i = 0; i < 2; i++) for(int j = 0; j < maxn; j++) {
        dp[i][j] = -1;
        if(j == 0) dp[i][j] = 0;
    }

    for(int k = 1; k <= n; k++) {
        int i = k % 2;
        bitset<maxn> BIT; BIT[0] = 1;
            
        int p = 1;
        while(p < K[k]) {
            BIT |= (BIT << p);
            K[k] -= p;
            p <<= 1;
        }
        BIT |= (BIT << K[k]);

        for(int j = 0; j < maxn; j++) for(int z = 0; z < maxn; z++) if(BIT[z]) {
            if(j + z * W[k] < maxn && dp[i][j] != -1) 
                dp[1 - i][j + z * W[k]] = max(dp[1 - i][j + z * W[k]], dp[i][j] + z * V[k]);
            dp[1 - i][j] = max(dp[1 - i][j], dp[i][j]);
        }
    }

    int ans = 0;
    for(int i = 1; i <= S; i++) ans = max({ans, dp[0][i], dp[1][i]});

    cout << ans;
}
signed main() {
    ios_base::sync_with_stdio(false);cin.tie(0);
    // #ifndef ONLINE_JUDGE
    // freopen("inp.txt", "r", stdin);freopen("out.txt", "w", stdout);
    // #endif
    int t = 1;// cin >> t;
    while(t--) Solve();
}
# Verdict Execution time Memory Grader output
1 Correct 10 ms 340 KB Output is correct
2 Correct 7 ms 340 KB Output is correct
3 Correct 5 ms 344 KB Output is correct
4 Correct 7 ms 328 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 388 ms 352 KB Output is correct
2 Correct 373 ms 464 KB Output is correct
3 Correct 357 ms 352 KB Output is correct
4 Correct 373 ms 356 KB Output is correct
5 Correct 363 ms 348 KB Output is correct
6 Correct 373 ms 352 KB Output is correct
7 Correct 369 ms 340 KB Output is correct
8 Correct 363 ms 356 KB Output is correct
9 Correct 356 ms 340 KB Output is correct
10 Correct 380 ms 356 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 388 ms 352 KB Output is correct
2 Correct 373 ms 464 KB Output is correct
3 Correct 357 ms 352 KB Output is correct
4 Correct 373 ms 356 KB Output is correct
5 Correct 363 ms 348 KB Output is correct
6 Correct 373 ms 352 KB Output is correct
7 Correct 369 ms 340 KB Output is correct
8 Correct 363 ms 356 KB Output is correct
9 Correct 356 ms 340 KB Output is correct
10 Correct 380 ms 356 KB Output is correct
11 Correct 371 ms 356 KB Output is correct
12 Correct 380 ms 352 KB Output is correct
13 Correct 359 ms 356 KB Output is correct
14 Correct 366 ms 356 KB Output is correct
15 Correct 374 ms 348 KB Output is correct
16 Correct 372 ms 340 KB Output is correct
17 Correct 359 ms 356 KB Output is correct
18 Correct 358 ms 340 KB Output is correct
19 Correct 369 ms 352 KB Output is correct
20 Correct 371 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 10 ms 340 KB Output is correct
2 Correct 7 ms 340 KB Output is correct
3 Correct 5 ms 344 KB Output is correct
4 Correct 7 ms 328 KB Output is correct
5 Correct 388 ms 352 KB Output is correct
6 Correct 373 ms 464 KB Output is correct
7 Correct 357 ms 352 KB Output is correct
8 Correct 373 ms 356 KB Output is correct
9 Correct 363 ms 348 KB Output is correct
10 Correct 373 ms 352 KB Output is correct
11 Correct 369 ms 340 KB Output is correct
12 Correct 363 ms 356 KB Output is correct
13 Correct 356 ms 340 KB Output is correct
14 Correct 380 ms 356 KB Output is correct
15 Correct 371 ms 356 KB Output is correct
16 Correct 380 ms 352 KB Output is correct
17 Correct 359 ms 356 KB Output is correct
18 Correct 366 ms 356 KB Output is correct
19 Correct 374 ms 348 KB Output is correct
20 Correct 372 ms 340 KB Output is correct
21 Correct 359 ms 356 KB Output is correct
22 Correct 358 ms 340 KB Output is correct
23 Correct 369 ms 352 KB Output is correct
24 Correct 371 ms 340 KB Output is correct
25 Correct 387 ms 356 KB Output is correct
26 Correct 748 ms 460 KB Output is correct
27 Correct 359 ms 352 KB Output is correct
28 Correct 364 ms 352 KB Output is correct
29 Correct 625 ms 352 KB Output is correct
30 Correct 696 ms 460 KB Output is correct
31 Correct 378 ms 356 KB Output is correct
32 Correct 369 ms 348 KB Output is correct
33 Correct 371 ms 348 KB Output is correct
34 Correct 359 ms 356 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 10 ms 340 KB Output is correct
2 Correct 7 ms 340 KB Output is correct
3 Correct 5 ms 344 KB Output is correct
4 Correct 7 ms 328 KB Output is correct
5 Correct 388 ms 352 KB Output is correct
6 Correct 373 ms 464 KB Output is correct
7 Correct 357 ms 352 KB Output is correct
8 Correct 373 ms 356 KB Output is correct
9 Correct 363 ms 348 KB Output is correct
10 Correct 373 ms 352 KB Output is correct
11 Correct 369 ms 340 KB Output is correct
12 Correct 363 ms 356 KB Output is correct
13 Correct 356 ms 340 KB Output is correct
14 Correct 380 ms 356 KB Output is correct
15 Correct 371 ms 356 KB Output is correct
16 Correct 380 ms 352 KB Output is correct
17 Correct 359 ms 356 KB Output is correct
18 Correct 366 ms 356 KB Output is correct
19 Correct 374 ms 348 KB Output is correct
20 Correct 372 ms 340 KB Output is correct
21 Correct 359 ms 356 KB Output is correct
22 Correct 358 ms 340 KB Output is correct
23 Correct 369 ms 352 KB Output is correct
24 Correct 371 ms 340 KB Output is correct
25 Correct 387 ms 356 KB Output is correct
26 Correct 748 ms 460 KB Output is correct
27 Correct 359 ms 352 KB Output is correct
28 Correct 364 ms 352 KB Output is correct
29 Correct 625 ms 352 KB Output is correct
30 Correct 696 ms 460 KB Output is correct
31 Correct 378 ms 356 KB Output is correct
32 Correct 369 ms 348 KB Output is correct
33 Correct 371 ms 348 KB Output is correct
34 Correct 359 ms 356 KB Output is correct
35 Execution timed out 1090 ms 3668 KB Time limit exceeded
36 Halted 0 ms 0 KB -