結果
問題 | No.602 隠されていたゲーム2 |
ユーザー |
![]() |
提出日時 | 2017-12-03 19:11:06 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 720 ms / 2,000 ms |
コード長 | 1,375 bytes |
コンパイル時間 | 222 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 21,808 KB |
最終ジャッジ日時 | 2024-12-16 00:06:20 |
合計ジャッジ時間 | 4,376 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 |
ソースコード
import sysreadline = sys.stdin.readlinen = int(input())d_arr = list(map(int, readline().split()))d_even = []d_odd = []for d in d_arr:if d % 2 == 0:d_even.append(d)else:d_odd.append(d)d_even.sort()d_odd.sort()x, y = map(lambda n: abs(int(n)), input().split())if x == 0 and y == 0:print(0)sys.exit()for d in d_arr:if d == x + y:print(1)sys.exit()def find(x, i):if len(x) == 0:return -1low = 0high = len(x) - 1t = (low + high) // 2while low <= high:if (i == x[t]):breakelif (i > x[t]):low = t + 1elif (i < x[t]):high = t - 1t = (low + high) // 2if (i == x[t]):print(2)sys.exit()else:return t + 1for d in d_even:if (x + y) % 2 == 0:if find(d_even, abs(x + y - d)) < find(d_even, x + y + d):print(2)sys.exit()else:if find(d_odd, abs(x + y - d)) < find(d_odd, x + y + d):print(2)sys.exit()for d in d_odd:if (x + y) % 2 == 0:if find(d_odd, abs(x + y - d)) < find(d_odd, x + y + d):print(2)sys.exit()else:if find(d_even, abs(x + y - d)) < find(d_even, x + y + d):print(2)sys.exit()print(-1)