結果

問題 No.2927 Reverse Polish Equation
ユーザー VvyLwVvyLw
提出日時 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
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 41 ms
51,968 KB
testcase_01 AC 41 ms
51,968 KB
testcase_02 AC 42 ms
51,840 KB
testcase_03 AC 41 ms
52,096 KB
testcase_04 AC 42 ms
52,352 KB
testcase_05 AC 41 ms
51,968 KB
testcase_06 AC 42 ms
51,968 KB
testcase_07 AC 96 ms
75,648 KB
testcase_08 AC 78 ms
71,552 KB
testcase_09 AC 99 ms
75,648 KB
testcase_10 AC 70 ms
66,816 KB
testcase_11 AC 105 ms
75,648 KB
testcase_12 AC 349 ms
81,256 KB
testcase_13 AC 534 ms
86,784 KB
testcase_14 AC 399 ms
82,816 KB
testcase_15 AC 506 ms
86,784 KB
testcase_16 AC 233 ms
78,336 KB
testcase_17 AC 654 ms
89,856 KB
testcase_18 AC 770 ms
94,208 KB
testcase_19 AC 148 ms
76,288 KB
testcase_20 AC 634 ms
89,728 KB
testcase_21 AC 917 ms
99,584 KB
testcase_22 AC 187 ms
77,440 KB
testcase_23 AC 42 ms
51,840 KB
testcase_24 AC 41 ms
52,224 KB
testcase_25 AC 41 ms
51,840 KB
testcase_26 AC 42 ms
52,096 KB
testcase_27 AC 803 ms
94,720 KB
testcase_28 AC 681 ms
91,776 KB
testcase_29 AC 192 ms
77,056 KB
testcase_30 AC 753 ms
94,080 KB
testcase_31 AC 146 ms
76,288 KB
testcase_32 AC 253 ms
78,976 KB
testcase_33 AC 401 ms
82,560 KB
testcase_34 AC 474 ms
85,248 KB
testcase_35 AC 81 ms
70,144 KB
testcase_36 AC 770 ms
94,080 KB
testcase_37 AC 364 ms
81,436 KB
testcase_38 AC 909 ms
97,152 KB
testcase_39 AC 430 ms
83,712 KB
testcase_40 AC 836 ms
94,208 KB
testcase_41 AC 660 ms
90,112 KB
testcase_42 AC 715 ms
118,760 KB
testcase_43 AC 670 ms
112,840 KB
testcase_44 AC 672 ms
112,716 KB
testcase_45 AC 669 ms
116,832 KB
権限があれば一括ダウンロードができます

ソースコード

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