結果
問題 |
No.411 昇順昇順ソート
|
ユーザー |
![]() |
提出日時 | 2025-03-20 20:52:39 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 302 ms / 2,000 ms |
コード長 | 952 bytes |
コンパイル時間 | 151 ms |
コンパイル使用メモリ | 82,088 KB |
実行使用メモリ | 75,836 KB |
最終ジャッジ日時 | 2025-03-20 20:52:52 |
合計ジャッジ時間 | 2,697 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 30 |
ソースコード
n, k = map(int, input().split()) if k == 1: if n == 1: print(0) else: part1 = (2 ** (n - 2) - 1) if (n >= 2) else 0 part2 = 0 m = n - 2 # number of elements from 3 to n if m > 0: possible = set(range(3, n + 1)) for mask in range(1, 1 << m): # exclude empty subset elements = [] for i in range(m): if (mask >> i) & 1: elements.append(3 + i) s_set = set(elements) remaining = possible - s_set if remaining: x = min(remaining) else: x = n + 1 # larger than any possible max_sd max_sd = max(elements) if max_sd > x: part2 += 1 print(part1 + part2) else: if k > n: print(0) else: ans = 1 << (n - k) print(ans)