結果
問題 | No.733 分身並列コーディング |
ユーザー |
![]() |
提出日時 | 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 |
ソースコード
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()