結果
| 問題 |
No.733 分身並列コーディング
|
| コンテスト | |
| ユーザー |
annin256
|
| 提出日時 | 2018-09-07 22:48:47 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 140 ms / 1,500 ms |
| コード長 | 653 bytes |
| コンパイル時間 | 461 ms |
| コンパイル使用メモリ | 30,464 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-11-29 17:21:10 |
| 合計ジャッジ時間 | 2,951 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 46 |
ソースコード
#include <stdio.h>
int T, n, t[17];
int dp[1 << 17];
int min(int x, int y) {
return x < y ? x : y;
}
int main(void) {
scanf("%d %d", &T, &n);
for (int i = 0; i < n; i++) {
scanf("%d", &t[i]);
}
for (int i = 1; i < 1 << n; i++) {
dp[i] = T + 1;
}
for (int k = 1;; k++) {
for (int i = 0; i < 1 << n; i++) {
for (int j = 0; j < n; j++) {
if (~i >> j & 1) {
dp[i | 1 << j] = min(dp[i | 1 << j], dp[i] + t[j]);
}
}
}
if (dp[(1 << n) - 1] <= T) {
printf("%d\n", k);
return 0;
}
for (int i = 0; i < 1 << n; i++) {
dp[i] = dp[i] <= T ? 0 : T + 1;
}
}
}
annin256