Submission #917337

#TimeUsernameProblemLanguageResultExecution timeMemory
917337rainboy서울에서 경산까지 (KOI17_travel)C11
29 / 100
6 ms604 KiB
#include <stdio.h>
#include <string.h>

#define W	100000

int max(int a, int b) { return a > b ? a : b; }

int main() {
	static int dp[W];
	int n, w, s, x;

	scanf("%d%d", &n, &w);
	memset(dp, -1, (w + 1) * sizeof *dp), dp[0] = 0;
	while (n--) {
		int w1, v1, w2, v2;

		scanf("%d%d%d%d", &w1, &v1, &w2, &v2);
		for (s = w; s >= 0; s--) {
			x = dp[s];
			if (x == -1)
				continue;
			dp[s] = -1;
			if (s + w1 <= w)
				dp[s + w1] = max(dp[s + w1], x + v1);
			if (s + w2 <= w)
				dp[s + w2] = max(dp[s + w2], x + v2);
		}
	}
	x = -1;
	for (s = 0; s <= w; s++)
		x = max(x, dp[s]);
	printf("%d\n", x);
	return 0;
}

Compilation message (stderr)

travel.c: In function 'main':
travel.c:12:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |  scanf("%d%d", &n, &w);
      |  ^~~~~~~~~~~~~~~~~~~~~
travel.c:17:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |   scanf("%d%d%d%d", &w1, &v1, &w2, &v2);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...