Submission #475633

# Submission time Handle Problem Language Result Execution time Memory
475633 2021-09-23T14:05:58 Z vishnu_sujith Knapsack (NOI18_knapsack) C++17
49 / 100
1000 ms 9140 KB
#include <bits/stdc++.h>

using namespace std;

#ifdef DEBUG
#define LOG(...) cerr << "[" << #__VA_ARGS__ << "]: " << repr(__VA_ARGS__) << endl;
#define MSG(args) cerr << args << "\n";
#define debug(x) x
#else
#define LOG(...)
#define MSG(args)
#define debug(x)
#endif

#define mp make_pair
#define pb push_back
#define sz(x) (int((x).size()))
#define ms(x, v) memset((x), v, sizeof(x))
#define all(x) (x).begin(), (x).end()
#define endl '\n'

using ll = long long;
using ld = long double;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using vi = vector<int>;
using vii = vector<pii>;
using vvi = vector<vi>;

const int mxN = int(1e5) + 10;

int n, S;
int v[mxN], w[mxN], k[mxN];

struct chash {
  size_t operator()(const pii &x) const {
    return hash<ll>()(ll(x.first)^(ll(x.second)<<32));
  }
};

unordered_map<pii, int, chash> memo;

int solve(int i, int s) {
  auto key = mp(i, s);
  if (i >= n || s <= 0) return 0LL;
  else if (memo.find(key) != memo.end()) return memo[key];

  int res = 0;
  for (int j = 0; j <= k[i]; ++j) {
    if (s - (1LL * j * w[i]) >= 0)
      res = max(res, solve(i + 1, s - (1LL * j * w[i])) + v[i] * j);
    else
      break;
  }
  return memo[key] = res;
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  cin >> S >> n;
  for (int i = 0; i < n; ++i)
    cin >> v[i] >> w[i] >> k[i];
  cout << solve(0, S) << endl;

  return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 588 KB Output is correct
3 Correct 1 ms 588 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 23 ms 6516 KB Output is correct
7 Correct 25 ms 7736 KB Output is correct
8 Correct 17 ms 6536 KB Output is correct
9 Correct 22 ms 7520 KB Output is correct
10 Correct 24 ms 8264 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 588 KB Output is correct
3 Correct 1 ms 588 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 23 ms 6516 KB Output is correct
7 Correct 25 ms 7736 KB Output is correct
8 Correct 17 ms 6536 KB Output is correct
9 Correct 22 ms 7520 KB Output is correct
10 Correct 24 ms 8264 KB Output is correct
11 Correct 0 ms 332 KB Output is correct
12 Correct 19 ms 3228 KB Output is correct
13 Correct 1 ms 588 KB Output is correct
14 Correct 1 ms 332 KB Output is correct
15 Correct 1 ms 332 KB Output is correct
16 Correct 42 ms 8120 KB Output is correct
17 Correct 24 ms 7488 KB Output is correct
18 Correct 24 ms 6808 KB Output is correct
19 Correct 40 ms 9140 KB Output is correct
20 Correct 22 ms 6848 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 ms 588 KB Output is correct
7 Correct 1 ms 588 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 332 KB Output is correct
10 Correct 23 ms 6516 KB Output is correct
11 Correct 25 ms 7736 KB Output is correct
12 Correct 17 ms 6536 KB Output is correct
13 Correct 22 ms 7520 KB Output is correct
14 Correct 24 ms 8264 KB Output is correct
15 Correct 0 ms 332 KB Output is correct
16 Correct 19 ms 3228 KB Output is correct
17 Correct 1 ms 588 KB Output is correct
18 Correct 1 ms 332 KB Output is correct
19 Correct 1 ms 332 KB Output is correct
20 Correct 42 ms 8120 KB Output is correct
21 Correct 24 ms 7488 KB Output is correct
22 Correct 24 ms 6808 KB Output is correct
23 Correct 40 ms 9140 KB Output is correct
24 Correct 22 ms 6848 KB Output is correct
25 Correct 1 ms 332 KB Output is correct
26 Execution timed out 1065 ms 4280 KB Time limit exceeded
27 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 ms 588 KB Output is correct
7 Correct 1 ms 588 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 332 KB Output is correct
10 Correct 23 ms 6516 KB Output is correct
11 Correct 25 ms 7736 KB Output is correct
12 Correct 17 ms 6536 KB Output is correct
13 Correct 22 ms 7520 KB Output is correct
14 Correct 24 ms 8264 KB Output is correct
15 Correct 0 ms 332 KB Output is correct
16 Correct 19 ms 3228 KB Output is correct
17 Correct 1 ms 588 KB Output is correct
18 Correct 1 ms 332 KB Output is correct
19 Correct 1 ms 332 KB Output is correct
20 Correct 42 ms 8120 KB Output is correct
21 Correct 24 ms 7488 KB Output is correct
22 Correct 24 ms 6808 KB Output is correct
23 Correct 40 ms 9140 KB Output is correct
24 Correct 22 ms 6848 KB Output is correct
25 Correct 1 ms 332 KB Output is correct
26 Execution timed out 1065 ms 4280 KB Time limit exceeded
27 Halted 0 ms 0 KB -