Submission #789505

#TimeUsernameProblemLanguageResultExecution timeMemory
789505codergirlKnapsack (NOI18_knapsack)C++14
73 / 100
1078 ms17144 KiB
#include <cstdio> #include <iostream> #include <cmath> #include <vector> int main() { std::vector<long> v, w; int s, n; std::scanf("%d %d", &s, &n); //long v[1000000], w[1000000]; long counter = 0, t; int x, y, z; for (int i=0; i < n; i++) { std::scanf("%d %d %d", &y, &z, &x); for (int j=0; j < 30; j++) { if (x == 0) break; t = std::pow(2, j); if (z*t > s) break; if (x < t) { v.push_back(y*x); w.push_back(z*x); counter++; break; //v[counter] = y*x, w[counter++] = z*x; break; } v.push_back(y*t); w.push_back(z*t); counter++; x -= t; //v[counter] = y*t, w[counter++] = z*t; x -= t; } } long arr[2][s+1]; for (long j=0; j <= s; j++) arr[0][j] = 0; arr[1][0] = 0; int a=0, b=1; for (long i=1; i <= counter; i++) { a = 1-a, b = 1-b; for (long j=1; j <= s; j++) arr[a][j] = (j-w[i-1] >= 0) ? std::max(arr[b][j-w[i-1]]+v[i-1], arr[b][j]) : arr[b][j]; } printf("%ld\n", arr[a][s]); }

Compilation message (stderr)

knapsack.cpp: In function 'int main()':
knapsack.cpp:7:49: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
    7 |     std::vector<long> v, w; int s, n; std::scanf("%d %d", &s, &n);
      |                                       ~~~~~~~~~~^~~~~~~~~~~~~~~~~
knapsack.cpp:12:19: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |         std::scanf("%d %d %d", &y, &z, &x);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#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...