結果

問題 No.3030 Kruskal-Katona
ユーザー pitP
提出日時 2025-02-21 22:12:04
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 738 bytes
コンパイル時間 382 ms
コンパイル使用メモリ 82,084 KB
実行使用メモリ 71,728 KB
最終ジャッジ日時 2025-02-21 22:12:09
合計ジャッジ時間 4,152 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 1 TLE * 1 -- * 25
権限があれば一括ダウンロードができます

ソースコード

diff #

N, i = map(int, input().split())

if i == 1:
    exit(print(N))

M = []
def dfs(upper, k, wa):
    # print(upper, k, wa, M)
    if wa == N:
        exit(print(*M))
    if k == 0:
        return
    
    for val in range(k, upper + 1):
        nume, deno = 1, 1
        for l in range(k):
            nume *= val - l
            deno *= l + 1
        
        nxt = nume // deno
        if wa + nxt > N:
            break

        M.append(val)
        dfs(nxt - 1, k - 1, wa + nxt)
        M.pop()


ok, ng = 0, N + i
while ng - ok > 1:
    mid = (ok + ng) >> 1

    nume, deno = 1, 1
    for l in range(i):
        nume *= mid - l
        deno *= l + 1

    if nume // deno > N:
        ng = mid
    else:
        ok = mid

dfs(ok, i, 0)
0