結果
| 問題 | No.3634 Made to order |
| コンテスト | |
| ユーザー |
pengin_2000
|
| 提出日時 | 2026-09-03 23:34:33 |
| 言語 | C (gcc 15.3.0) |
| 結果 |
RE
不安定
|
| 実行時間 | - |
| コード長 | 932 bytes |
| 記録 | |
| コンパイル時間 | 1,172 ms |
| コンパイル使用メモリ | 41,568 KB |
| 実行使用メモリ | 43,180 KB |
| 最終ジャッジ日時 | 2026-09-03 23:34:40 |
| 合計ジャッジ時間 | 6,493 ms |
|
ジャッジサーバーID (参考情報) |
judge1_1 / judge2_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| サブタスク $1$ | 20 % | AC * 5 RE * 3 |
| サブタスク $2$ | 10 % | AC * 21 |
| サブタスク $3$ | 70 % | AC * 19 RE * 7 |
| 合計 | 3 * 10% = 30 点 |
ソースコード
#include<stdio.h>
int a[16], b[16], c[16];
int dp[8128][1301];
int main()
{
int n, d;
scanf("%d %d", &n, &d);
int i, j, k;
for (i = 0; i < n; i++)
scanf("%d %d %d", &a[i], &b[i], &c[i]);
int val1, val2;
for (i = 0; i < (1 << n); i++)
for (j = 0; j < 1301; j++)
dp[i][j] = 1e9;
dp[0][0] = 0;
for (i = 0; i < (1 << n); i++)
{
for (j = 0; j < n; j++)
{
if (((i >> j) & 1) > 0)
continue;
for (k = 0; k < 1301; k++)
{
val1 = k;
val2 = dp[i][k];
val1 -= a[j];
if (val1 < 0)
val1 = 0;
val1 += b[j];
val2 -= a[j];
if (val2 > val1)
val2 += c[j];
else
val2 = val1 + c[j];
if (dp[i | (1 << j)][val1] > val2)
dp[i | (1 << j)][val1] = val2;
}
}
}
int s = 0;
for (i = 0; i < n; i++)
s += a[i];
for (k = 0, i = (1 << n) - 1, j = 0; j < 1301; j++)
if (s + dp[i][j] <= d)
k++;
if (k > 0)
printf("Yes\n");
else
printf("No\n");
return 0;
}
pengin_2000