結果
問題 | No.733 分身並列コーディング |
ユーザー |
![]() |
提出日時 | 2025-06-12 20:48:21 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 155 ms / 1,500 ms |
コード長 | 1,097 bytes |
コンパイル時間 | 157 ms |
コンパイル使用メモリ | 82,248 KB |
実行使用メモリ | 77,628 KB |
最終ジャッジ日時 | 2025-06-12 20:50:31 |
合計ジャッジ時間 | 3,612 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 46 |
ソースコード
def can_assign(tasks, k, T): tasks.sort(reverse=True) return backtrack(tasks, 0, [0] * k, T) def backtrack(tasks, index, groups, T): if index == len(tasks): return True task = tasks[index] groups = sorted(groups) for i in range(len(groups)): if i > 0 and groups[i] == groups[i-1]: continue if groups[i] + task <= T: new_groups = list(groups) new_groups[i] += task if backtrack(tasks, index + 1, new_groups, T): return True return False def main(): import sys input = sys.stdin.read().split() ptr = 0 T = int(input[ptr]) ptr += 1 N = int(input[ptr]) ptr += 1 t_i = [] for _ in range(N): t_i.append(int(input[ptr])) ptr += 1 sum_t = sum(t_i) min_k = (sum_t + T - 1) // T for k in range(min_k, N + 1): if sum_t > k * T: continue tasks = sorted(t_i, reverse=True) if can_assign(tasks, k, T): print(k) return print(N) if __name__ == "__main__": main()