結果

問題 No.733 分身並列コーディング
ユーザー gew1fw
提出日時 2025-06-12 20:47:03
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 161 ms / 1,500 ms
コード長 984 bytes
コンパイル時間 172 ms
コンパイル使用メモリ 82,084 KB
実行使用メモリ 77,492 KB
最終ジャッジ日時 2025-06-12 20:47:51
合計ジャッジ時間 3,973 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 46
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
import math

def can_assign(k, t, T, index, groups):
    if index == len(t):
        return True
    current = t[index]
    for i in range(k):
        if i > 0 and groups[i] == groups[i-1]:
            continue
        if groups[i] + current > T:
            continue
        new_groups = list(groups)
        new_groups[i] += current
        new_groups.sort()
        if can_assign(k, t, T, index + 1, new_groups):
            return True
    return False

def main():
    T = int(sys.stdin.readline())
    N = int(sys.stdin.readline())
    t = [int(sys.stdin.readline()) for _ in range(N)]
    t.sort(reverse=True)
    total_sum = sum(t)
    if total_sum == 0:
        print(0)
        return
    min_k = (total_sum + T - 1) // T
    min_k = max(min_k, 1)
    for k in range(min_k, N + 1):
        groups = [0] * k
        groups.sort()
        if can_assign(k, t, T, 0, groups):
            print(k)
            return
    print(N)

if __name__ == "__main__":
    main()
0