結果
問題 | No.1701 half price |
ユーザー |
![]() |
提出日時 | 2021-10-08 22:21:38 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 16 ms / 3,000 ms |
コード長 | 753 bytes |
コンパイル時間 | 1,857 ms |
コンパイル使用メモリ | 211,656 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-22 12:44:38 |
合計ジャッジ時間 | 2,560 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 20 |
ソースコード
import std;void main() {long N, W;readf("%d %d\n", N, W);auto a = readln.chomp.split.to!(long[]);void dfs(long num, long cnt, long bit, ref bool flag) {if (cnt == N) {if (num == W) {flag = true;}}else {if (bit & 1) {dfs(num+a[cnt], cnt+1, bit>>1, flag);dfs(num+a[cnt]/2, cnt+1, bit>>1, flag);}else {dfs(num, cnt+1, bit>>1, flag);}}}long res;foreach (i; 1 .. 1<<N) {long b = i;bool canChoose;dfs(0, 0, b, canChoose);if (canChoose) {++res;}}res.writeln;}