結果
問題 | 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 = 0for i in range(2):v = stack.pop()val += vstack.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 = -1r = 10**13while r-l>1:mid = (r+l)//2if Reverse_Polish_Notation(S, mid)>=Y:r = midelse:l = mid#print(l,r)if Reverse_Polish_Notation(S,r)==Y:print(r)else:print(-1)