結果
問題 |
No.27 板の準備
|
ユーザー |
![]() |
提出日時 | 2019-09-03 09:02:35 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 821 bytes |
コンパイル時間 | 363 ms |
コンパイル使用メモリ | 30,464 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-12-23 08:02:09 |
合計ジャッジ時間 | 998 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 18 |
ソースコード
// yukicoder: 27 板の準備 // 2019.9.3 bal4u #include <stdio.h> #include <stdlib.h> #include <string.h> int v[4]; int dp[33]; int cmp(const void *u, const void *v) { return *(int *)u - *(int *)v; } inline static void chmin(int *a, int b) { if (*a > b) *a = b; } int check(int *a) { int i, j, s; memset(dp, 0x01, sizeof(dp)); dp[0] = 0; for (i = 1; i <= 3; i++) for (j = a[i]; j <= 30; j++) chmin(&dp[j], dp[j-a[i]]+1); s = 0; for (i = 0; i < 4; i++) s += dp[v[i]]; return s; } int main() { int i, t, a[4], ans; for (i = 0; i < 4; i++) scanf("%d", v+i); qsort(v, 4, sizeof(int), cmp); ans = 10000; for (a[1] = 1; a[1] <= v[0]; a[1]++) for (a[2] = a[1]; a[2] <= v[3]; a[2]++) for (a[3] = a[2]; a[3] <= v[3]; a[3]++) { if ((t = check(a)) < ans) ans = t; } printf("%d\n", ans); return 0; }