結果
| 問題 |
No.1594 Three Classes
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-08-15 15:50:55 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 35 ms / 2,000 ms |
| コード長 | 1,378 bytes |
| コンパイル時間 | 226 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 11,008 KB |
| 最終ジャッジ日時 | 2024-11-16 08:31:58 |
| 合計ジャッジ時間 | 1,371 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 18 |
ソースコード
from itertools import combinations
def kurasuwake(N, E):
Eall = sum(E)
if Eall % 3 > 0:
return 'No'
else:
Ecl = Eall // 3
Emax = max(E)
if Emax > Ecl:
return 'No'
else:
A = P(E, Ecl)
if A == 'No':
return 'No'
else:
B = P(A, Ecl)
if B == 'No':
return 'No'
else:
PC = sum(B)
if PC == Ecl:
return 'Yes'
else:
return 'No'
def P(E, Ecl):
N = len(E)
li = sorted(E)
P = 0 + li[-1]
li.pop(-1)
if P == Ecl:
return li
comij = []
for i in range(1, N - 1):
comi = list(combinations(li, i))
if P == Ecl:
break
for j in range(len(comi)):
sumij = sum(comi[j])
if P + sumij == Ecl:
comij = comi[j]
P = P + sumij
break
if P != Ecl:
return 'No'
for k in range(len(comij)):
for l in range(len(li)):
if li[l] == comij[k]:
li.pop(l)
break
return li
def main():
N = int(input())
E = list(map(int, input().split()))
print(kurasuwake(N, E))
if __name__ == '__main__':
main()