結果
問題 | No.2927 Reverse Polish Equation |
ユーザー |
![]() |
提出日時 | 2024-10-12 16:55:10 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 624 ms / 2,000 ms |
コード長 | 953 bytes |
コンパイル時間 | 164 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 131,012 KB |
最終ジャッジ日時 | 2024-10-16 00:28:27 |
合計ジャッジ時間 | 13,476 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 43 |
ソースコード
Q, Y = map(int, input().split()) S = list(input().split()) def func(x): stack = [] for op in S: if op == "+": a, b = int(stack.pop()), int(stack.pop()) stack.append(a+b) elif op == "min": a, b = int(stack.pop()), int(stack.pop()) stack.append(min(a, b)) elif op == "max": a, b = int(stack.pop()), int(stack.pop()) stack.append(max(a, b)) elif op == "X": stack.append(x) else: stack.append(int(op)) return stack[0] INF = 10**18 minus = func(-INF) plus = func(INF) if Y < minus or plus < Y: exit(print(-1)) left = -INF right = INF while left+1 < right: mid = (left+right)//2 if func(mid) < Y: left = mid else: right = mid if func(right) == Y: if right >= 0: print(right) elif func(0) == Y: print(0) else: print(-1) else: print(-1)