結果
| 問題 |
No.4 おもりと天秤
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-06-03 03:39:52 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,448 bytes |
| コンパイル時間 | 202 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 10,880 KB |
| 最終ジャッジ日時 | 2024-09-22 03:59:09 |
| 合計ジャッジ時間 | 1,824 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 19 WA * 4 |
ソースコード
'''
授業中にもかかわらず遊んでしまうdaveは、
理科の実験中に、色んな重さの種類があるおもりをすべて使って、
ちょうど天秤が水平になるおもりの組み合わせがあるかを知りたくなったようで、それに遊び呆けてる。
(すべてのおもりを使うため、使わなかったおもりはない。)
あなたは、daveにその組み合わせがあるかどうか教えて、授業に集中させるようにしてください。
もしそのような組み合わせがあれば possiblepossible 、なければ impossibleimpossible を出力してください。
'''
def last_one(l):
last_index = 0
for num_i, i in enumerate(l):
if i == 1:
last_index = num_i
return last_index
def match_sum(l, a, where_sum=0):
for num_i, i in enumerate(l):
#print(i, a)
if i < a:
return [num_i + where_sum] + match_sum(l[num_i + 1:], a - i, where_sum + num_i + 1)
elif i == a:
return [num_i + where_sum]
return [-1]
if __name__ == '__main__':
A = int(input())
S = list(map(int, input().split()))
S.sort()
S.reverse()
half_sum = sum(S) / 2
if sum(S) % 2 == 1:
print("impossible")
else:
if -1 in match_sum(S, half_sum):
print("impossible")
else:
print("possible")