結果
| 問題 |
No.602 隠されていたゲーム2
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 13:13:53 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 164 ms / 2,000 ms |
| コード長 | 1,041 bytes |
| コンパイル時間 | 433 ms |
| コンパイル使用メモリ | 82,712 KB |
| 実行使用メモリ | 116,620 KB |
| 最終ジャッジ日時 | 2025-06-12 13:16:08 |
| 合計ジャッジ時間 | 3,049 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 21 |
ソースコード
import bisect
def main():
import sys
input = sys.stdin.read().split()
idx = 0
n = int(input[idx])
idx += 1
d_list = list(map(int, input[idx:idx + n]))
idx += n
x = int(input[idx])
y = int(input[idx + 1])
idx += 2
if x == 0 and y == 0:
print(0)
return
D = abs(x) + abs(y)
d_set = set(d_list)
if D in d_set:
print(1)
return
evens = []
odds = []
for d in d_list:
if d % 2 == 0:
evens.append(d)
else:
odds.append(d)
evens.sort()
odds.sort()
for di in d_list:
lower = abs(D - di)
upper = D + di
required_parity = (D + di) % 2
if required_parity == 0:
target_list = evens
else:
target_list = odds
left = bisect.bisect_left(target_list, lower)
right = bisect.bisect_right(target_list, upper)
if left < right:
print(2)
return
print(-1)
if __name__ == "__main__":
main()
gew1fw