Luzhiled's Library

This documentation is automatically generated by competitive-verifier/competitive-verifier

View the Project on GitHub ei1333/library

:heavy_check_mark: test/verify/aoj-dpl-1-b.test.cpp

Depends on

Code

// clang-format off
// competitive-verifier: PROBLEM http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=DPL_1_B
// clang-format on

#include <algorithm>
#include <iostream>
#include <vector>

#include "../../dp/knapsack-01.hpp"

using namespace std;

int main() {
  int N, W;
  cin >> N >> W;
  vector<int> v(N), w(N);
  for (int i = 0; i < N; i++) cin >> v[i] >> w[i];
  auto ret = knapsack_01(w, v, W, -1);
  cout << *max_element(ret.begin(), ret.end()) << endl;
}
#line 1 "test/verify/aoj-dpl-1-b.test.cpp"
// clang-format off
// competitive-verifier: PROBLEM http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=DPL_1_B
// clang-format on

#include <algorithm>
#include <iostream>
#include <vector>

#line 2 "dp/knapsack-01.hpp"

#include <functional>
#line 5 "dp/knapsack-01.hpp"

template <typename T, typename Compare = std::greater<T> >
std::vector<T> knapsack_01(const std::vector<int>& w, const std::vector<T>& v,
                           const int& W, const T& NG,
                           const Compare& comp = Compare()) {
  const int N = (int)w.size();
  std::vector<T> dp(W + 1, NG);
  dp[0] = T();
  for (int i = 0; i < N; i++) {
    for (int j = W; j >= w[i]; j--) {
      if (dp[j - w[i]] != NG) {
        if (comp(dp[j - w[i]] + v[i], dp[j])) {
          dp[j] = dp[j - w[i]] + v[i];
        }
      }
    }
  }
  return dp;
}
#line 10 "test/verify/aoj-dpl-1-b.test.cpp"

using namespace std;

int main() {
  int N, W;
  cin >> N >> W;
  vector<int> v(N), w(N);
  for (int i = 0; i < N; i++) cin >> v[i] >> w[i];
  auto ret = knapsack_01(w, v, W, -1);
  cout << *max_element(ret.begin(), ret.end()) << endl;
}

Test cases

Env Name Status Elapsed Memory
g++ 00_sample_00 :heavy_check_mark: AC 2 ms 4 MB
g++ 00_sample_01 :heavy_check_mark: AC 2 ms 4 MB
g++ 01_small_00 :heavy_check_mark: AC 2 ms 4 MB
g++ 01_small_01 :heavy_check_mark: AC 2 ms 4 MB
g++ 01_small_02 :heavy_check_mark: AC 2 ms 4 MB
g++ 01_small_03 :heavy_check_mark: AC 2 ms 4 MB
g++ 02_rand_00 :heavy_check_mark: AC 2 ms 4 MB
g++ 02_rand_01 :heavy_check_mark: AC 2 ms 4 MB
g++ 02_rand_02 :heavy_check_mark: AC 2 ms 4 MB
g++ 02_rand_03 :heavy_check_mark: AC 2 ms 4 MB
g++ 02_rand_04 :heavy_check_mark: AC 2 ms 4 MB
g++ 02_rand_05 :heavy_check_mark: AC 2 ms 4 MB
g++ 02_rand_06 :heavy_check_mark: AC 2 ms 4 MB
g++ 02_rand_07 :heavy_check_mark: AC 2 ms 4 MB
g++ 02_rand_08 :heavy_check_mark: AC 2 ms 4 MB
g++ 02_rand_09 :heavy_check_mark: AC 2 ms 4 MB
g++ 03_corner_00 :heavy_check_mark: AC 2 ms 4 MB
g++ 03_corner_01 :heavy_check_mark: AC 2 ms 4 MB
g++ 03_corner_02 :heavy_check_mark: AC 2 ms 4 MB
g++ 03_corner_03 :heavy_check_mark: AC 2 ms 4 MB
g++ 03_medium_00 :heavy_check_mark: AC 2 ms 4 MB
g++ 03_medium_01 :heavy_check_mark: AC 2 ms 4 MB
g++ 03_medium_02 :heavy_check_mark: AC 2 ms 4 MB
g++ 03_medium_03 :heavy_check_mark: AC 2 ms 4 MB
g++ 04_large_00 :heavy_check_mark: AC 2 ms 4 MB
g++ 04_large_01 :heavy_check_mark: AC 2 ms 4 MB
g++ 04_large_02 :heavy_check_mark: AC 2 ms 4 MB
g++ 04_large_03 :heavy_check_mark: AC 2 ms 4 MB
g++ 04_large_04 :heavy_check_mark: AC 2 ms 4 MB
g++ 04_large_05 :heavy_check_mark: AC 2 ms 4 MB
g++ 04_large_06 :heavy_check_mark: AC 3 ms 4 MB
g++ 04_large_07 :heavy_check_mark: AC 3 ms 4 MB
g++ 05_maximum_00 :heavy_check_mark: AC 2 ms 4 MB
g++ 05_maximum_01 :heavy_check_mark: AC 2 ms 4 MB
g++ 05_maximum_02 :heavy_check_mark: AC 3 ms 4 MB
g++ 05_maximum_03 :heavy_check_mark: AC 3 ms 4 MB
clang++ 00_sample_00 :heavy_check_mark: AC 2 ms 4 MB
clang++ 00_sample_01 :heavy_check_mark: AC 2 ms 4 MB
clang++ 01_small_00 :heavy_check_mark: AC 2 ms 4 MB
clang++ 01_small_01 :heavy_check_mark: AC 2 ms 4 MB
clang++ 01_small_02 :heavy_check_mark: AC 2 ms 4 MB
clang++ 01_small_03 :heavy_check_mark: AC 2 ms 4 MB
clang++ 02_rand_00 :heavy_check_mark: AC 2 ms 4 MB
clang++ 02_rand_01 :heavy_check_mark: AC 2 ms 4 MB
clang++ 02_rand_02 :heavy_check_mark: AC 2 ms 4 MB
clang++ 02_rand_03 :heavy_check_mark: AC 2 ms 4 MB
clang++ 02_rand_04 :heavy_check_mark: AC 2 ms 4 MB
clang++ 02_rand_05 :heavy_check_mark: AC 2 ms 4 MB
clang++ 02_rand_06 :heavy_check_mark: AC 2 ms 4 MB
clang++ 02_rand_07 :heavy_check_mark: AC 2 ms 4 MB
clang++ 02_rand_08 :heavy_check_mark: AC 2 ms 4 MB
clang++ 02_rand_09 :heavy_check_mark: AC 2 ms 4 MB
clang++ 03_corner_00 :heavy_check_mark: AC 2 ms 4 MB
clang++ 03_corner_01 :heavy_check_mark: AC 2 ms 4 MB
clang++ 03_corner_02 :heavy_check_mark: AC 2 ms 4 MB
clang++ 03_corner_03 :heavy_check_mark: AC 2 ms 4 MB
clang++ 03_medium_00 :heavy_check_mark: AC 2 ms 4 MB
clang++ 03_medium_01 :heavy_check_mark: AC 2 ms 4 MB
clang++ 03_medium_02 :heavy_check_mark: AC 2 ms 4 MB
clang++ 03_medium_03 :heavy_check_mark: AC 2 ms 4 MB
clang++ 04_large_00 :heavy_check_mark: AC 2 ms 4 MB
clang++ 04_large_01 :heavy_check_mark: AC 2 ms 4 MB
clang++ 04_large_02 :heavy_check_mark: AC 2 ms 4 MB
clang++ 04_large_03 :heavy_check_mark: AC 2 ms 4 MB
clang++ 04_large_04 :heavy_check_mark: AC 2 ms 4 MB
clang++ 04_large_05 :heavy_check_mark: AC 2 ms 4 MB
clang++ 04_large_06 :heavy_check_mark: AC 3 ms 4 MB
clang++ 04_large_07 :heavy_check_mark: AC 3 ms 4 MB
clang++ 05_maximum_00 :heavy_check_mark: AC 2 ms 4 MB
clang++ 05_maximum_01 :heavy_check_mark: AC 2 ms 4 MB
clang++ 05_maximum_02 :heavy_check_mark: AC 2 ms 4 MB
clang++ 05_maximum_03 :heavy_check_mark: AC 3 ms 4 MB
Back to top page