結果

問題 No.2927 Reverse Polish Equation
ユーザー VvyLw
提出日時 2024-10-14 18:04:22
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 917 ms / 2,000 ms
コード長 1,292 bytes
コンパイル時間 227 ms
コンパイル使用メモリ 82,304 KB
実行使用メモリ 118,760 KB
最終ジャッジ日時 2024-10-16 00:34:10
合計ジャッジ時間 18,494 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 43
権限があれば一括ダウンロードができます

ソースコード

diff #

# LPSolverで挑戦するも失敗
# from pulp import LpProblem, LpVariable, LpMinimize, value, PULP_CBC_CMD, LpInteger
# _,y=map(int,input().split())
# s=list(input().split())
# sk=[]
# op = {'+': lambda x,y: f"({x}+{y})",
#       'max': lambda x,y: f"max({x},{y})",
#       'min': lambda x,y: f"min({x},{y})"}
# prob=LpProblem(sense=LpMinimize)
# for t in s:
#     if t in op:
#         b,a=sk.pop(),sk.pop()
#         sk.append(op[t](a,b))
#     else: sk.append(t)
# print(sk[0])
# x=LpVariable("x",lowBound=0,cat=LpInteger)
# prob+=eval(sk[0],{"X":x,
#                   "max": lambda a,b: a if a>=b else b,
#                   "min": lambda a,b: a if a<=b else b})==y
# prob+=x
# prob.solve(PULP_CBC_CMD(msg=False))
# if prob.status!=1: print(-1)
# else: print(int(value(x)))

# やったか!?
_,y=map(int,input().split())
s=list(input().split())
def f(x):
    sk=[]
    op={'+': lambda x,y: x+y,
        'max': lambda x,y: max(x,y),
        'min': lambda x,y: min(x,y)}
    for t in s:
        if t in op:
            b,a=sk.pop(),sk.pop()
            sk.append(op[t](a,b))
        else: sk.append(x if t=="X" else int(t))
    return sk[0]
ok,ng=(1<<61)-1,-1
while abs(ok-ng)>1:
    x=(ok+ng)//2
    # print(x, f(x))
    if f(x)>=y: ok=x
    else: ng=x
print(ok if f(ok)==y else -1)
0