Submission #764500

# Submission time Handle Problem Language Result Execution time Memory
764500 2023-06-23T13:24:48 Z Peter2017 Knapsack (NOI18_knapsack) C++14
37 / 100
3 ms 468 KB
#include <bits/stdc++.h>
#define fi first
#define se second
#define ll long long
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pill pair<int,ll>
#define mem(a, b) memset(a, b, sizeof(a))
#define MASK(i) (1LL << (i))
#define BIT(x, i) (((x) >> (i)) & 1)

using namespace std;

const int N = 1e5 + 5;
const int S = 1e5 + 5;
const ll oo = 1e17;

template <typename T1, typename T2> bool maxi(T1 &a, T2 &b){if (a < b){a = b; return 1;} return 0;}
template <typename T1, typename T2> bool mini(T1 &a, T2 &b){if (a > b){a = b; return 1;} return 0;}

int n, s;
vector <int> v, w, k;
bool ar;
vector <vector<ll>> f;
ll ans;

int main(){
	cin.tie(0)->sync_with_stdio(0);
	cin >> s >> n;
	v.assign(n, 0);
	w.assign(n, 0);
	k.assign(n, 0);
	for (int i = 0; i < n; i++){
		cin >> v[i] >> w[i] >> k[i];
	}
	f.assign(2, vector <ll> (s + 1, 0));
	for (int i = 0; i < n; i++){
		ar ^= 1;
		for (int j = 0; j <= s; j++){
			f[ar][j] = f[ar ^ 1][j];
			int l = 1, r = k[i];
			while (l <= r){
				int m = (l + r) >> 1;
				if (w[i] * m > j){
					r = m - 1;
					continue;
				}
				ll tmp = f[ar ^ 1][j - w[i] * m] + 1ll * v[i] * m;
				if (maxi(f[ar][j], tmp)){
					l = m + 1;
				} else r = m - 1;
			}
		}
	}
	for (int j = 0; j <= s; j++)
		maxi(ans, f[ar][j]);
	cout << ans;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Runtime error 1 ms 468 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 3 ms 340 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 1 ms 340 KB Output is correct
19 Correct 1 ms 340 KB Output is correct
20 Correct 1 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Runtime error 1 ms 468 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Runtime error 1 ms 468 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -