結果
問題 |
No.2927 Reverse Polish Equation
|
ユーザー |
![]() |
提出日時 | 2024-10-17 21:02:53 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 476 ms / 2,000 ms |
コード長 | 1,043 bytes |
コンパイル時間 | 3,884 ms |
コンパイル使用メモリ | 82,316 KB |
実行使用メモリ | 123,172 KB |
最終ジャッジ日時 | 2024-10-17 21:03:09 |
合計ジャッジ時間 | 11,585 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 43 |
ソースコード
Q,Y = map(int, input().split()) S = list(input().split()) def Reverse_Polish_Notation(S, x): stack = list() N = len(S) for i in range(N): if S[i] == "+": val = 0 for i in range(2): v = stack.pop() val += v stack.append(val) elif S[i] == "min": m = stack.pop() n = stack.pop() val = min(m, n) stack.append(val) elif S[i] == "max": m = stack.pop() n = stack.pop() val = max(m, n) stack.append(val) else: if S[i]=="X": stack.append(x) else: stack.append(int(S[i])) #print(stack) return stack[-1] if Reverse_Polish_Notation(S,0)==Y: print(0) exit() l = -1 r = 10**13 while r-l>1: mid = (r+l)//2 if Reverse_Polish_Notation(S, mid)>=Y: r = mid else: l = mid #print(l,r) if Reverse_Polish_Notation(S,r)==Y: print(r) else: print(-1)