求助,给dalao关注一个
查看原帖
求助,给dalao关注一个
246331
mystic_qwq楼主2023/5/2 13:34

80分 第一个点没过

#include <stdio.h>
int V, n, a[31], i, j, IMAX = 0;
_Bool d[2][20001], State = 0;
int main(){
	scanf("%d%d", &V, &n);
	for (; i < n; ++ i) scanf("%d", a + i + 1);
	d[0][0] = 1;
	for (i = 1; i <= n; ++ i) {
		int t = IMAX;
		for (j = 0; j <= t; ++ j){
			int Sum = j + a[i];
			(d[State][j] && Sum <= V) && (
				d[State?0:1][j] = d[State?0:1][Sum] = 1, 
				(Sum > IMAX) && (IMAX = Sum)
			);
		}
		State = State?0:1;
	}
	for (i = V; i >= 0; -- i) 
		if (d[0][i] | d[1][i]) {printf("%d", V - i), exit(0); }
	return -1;
}
2023/5/2 13:34
加载中...