Submission #764488

# Submission time Handle Problem Language Result Execution time Memory
764488 2023-06-23T12:58:54 Z Peter2017 Knapsack (NOI18_knapsack) C++14
37 / 100
2 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 = 2e3 + 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;
int v[N], w[N], k[N];
bool ar;
long long f[2][S], ans;

// ll btr(int i, int s_used){
// 	if (s_used > s) return -oo;
// 	if (i == n + 1) return 0;
// 	ll &res = f[i][s_used];
// 	if (res != -1) return res;
// 	int l = 1, r = k[i];
// 	res = btr(i + 1, s_used);
// 	ll compare;
// 	while(l <= r){
// 		int m = (l + r) >> 1;
// 		compare = btr(i + 1, s_used + w[i] * m) + v[i] * m;
// 		if (maxi(res, compare)){
// 			l = m + 1;
// 		} else r = m - 1;
// 	}
// 	return res;
// }

int main(){
	cin.tie(0)->sync_with_stdio(0);
	cin >> s >> n;
	for (int i = 1; i <= n; i++){
		cin >> v[i] >> w[i] >> k[i];
	}
	// mem(f, -1);
	// cout << btr(1, 0);
	for (int i = 1; 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 340 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 328 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 368 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 340 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 328 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 368 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 0 ms 340 KB Output is correct
12 Correct 2 ms 340 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 328 KB Output is correct
15 Correct 1 ms 324 KB Output is correct
16 Correct 1 ms 332 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 1 ms 324 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 -