Submission #209522

#TimeUsernameProblemLanguageResultExecution timeMemory
209522model_codeKnapsack (NOI18_knapsack)C++17
37 / 100
53 ms79484 KiB
// 0-1 Knapsack (IV) // should be MLE/TLE (too slow?) #include <bits/stdc++.h> using namespace std; typedef long long ll; #define MAX_N 110 // actually 100 #define MAX_NK 1010 // actually 100*100 = 10000 #define MAX_S 10010 // actually 10000 int i, j, S, N, K, new_N; ll V, W, new_V[MAX_NK], new_W[MAX_NK]; // transformed data set, can exceed the value of 32 bit signed integer! ll memo[MAX_NK][MAX_S]; // 80 MB * 4 = 320 MB... > 256 MB ll value(int id, int w) { if (id == new_N || w == 0) return 0; if (memo[id][w] != -1) return memo[id][w]; if (new_W[id] > w) return memo[id][w] = value(id+1, w); return memo[id][w] = max(value(id+1, w), new_V[id] + value(id+1, w-new_W[id])); } int main() { // freopen("in.txt", "r", stdin); scanf("%d %d", &S, &N); // assert(1 <= S && S <= 10000); // assert(1 <= N && N <= 100); for (i = new_N = 0; i < N; i++) { scanf("%lld %lld %d", &V, &W, &K); // assert(0 <= V && V <= 100000000); // assert(0 <= W && W <= 2000); // assert(1 <= K && K <= 100); for (j = 1; j <= K; j++) new_V[new_N] = V, new_W[new_N++] = W; // linear growth, multiple copies of the same thing } // printf("NEWN = %d\n", new_N); memset(memo, -1, sizeof memo); printf("%lld\n", value(0, S)); return 0; }

Compilation message (stderr)

knapsack.cpp: In function 'int main()':
knapsack.cpp:26:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d", &S, &N);
     ~~~~~^~~~~~~~~~~~~~~~~
knapsack.cpp:30:12: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
       scanf("%lld %lld %d", &V, &W, &K);
       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...