QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#391992 | #6750. Calculate | Kir1same | WA | 71ms | 11156kb | Python3 | 1.3kb | 2024-04-17 00:02:48 | 2024-04-17 00:02:48 |
Judging History
answer
from queue import LifoQueue
ss:str = input()
st = LifoQueue()
ma = {}
s = ""
pos = []
for i in range(len(ss)):
if ss[i]=='(':
st.put(i)
elif ss[i]==')':
la = st.get()
ma[la] = i
ma[i] = la
else:
ma[i] = -1
if ss[i] == '?':
pos.append(i)
def calc(l, r):
pt = l
while pt < r and s[pt].isdigit():
pt += 1
if pt == r:
return int(s[l:r])
if s[l] == '(':
pt = ma[l]+1
res = calc(l+1, ma[l])
else:
res = calc(l, pt)
if pt == r:
return res
if s[pt] == '+':
res += calc(pt+1, r)
else:
res -= calc(pt+1, r)
return res
mx = 0
if len(pos) == 0:
mx = calc(0,len(s))
elif len(pos) ==1:
s = ss[:pos[0]] + '0' + ss[pos[0]+1:]
mx = calc(0, len(s))
for i in range(10):
s = ss[:pos[0]] + str(i) + ss[pos[0]+1:]
mx = max(mx, calc(0, len(s)))
elif len(pos) == 2:
s = ss[:pos[0]] + '0' + ss[pos[0]+1:pos[1]] + '0' + ss[pos[1]+1 : ]
mx = calc(0, len(s))
for i in range(10):
s = ss[:pos[0]] + str(i) + ss[pos[0]+1:]
for j in range(10):
s = s[:pos[1]] + str(j) + s[pos[1]+1:]
mx = max(mx, calc(0, len(s)))
print(mx)
详细
Test #1:
score: 100
Accepted
time: 16ms
memory: 10776kb
input:
?+?
output:
18
result:
ok 1 number(s): "18"
Test #2:
score: 0
Accepted
time: 12ms
memory: 10756kb
input:
(?+9)-(?+1)
output:
17
result:
ok 1 number(s): "17"
Test #3:
score: -100
Wrong Answer
time: 71ms
memory: 11156kb
input:
((9)-(((8)-(2))+(((1+(1))-(1+((2)+2+2)))+(5)+4))+(((7)-((9)+3))-((8)-(0-(2))+0))+((6)-(6+(((4)-(9))-(8-((9)+(1))+(0)))+(2-((9)+7))-(1)))-((((7)+(1))-((3)+(3)))-((2)-((6)-((3)-(8)))))+(2+0-((6)-(1))))-((((3)-(((0)+((4)-(9))+((6+8)+4)+(5)-(4-(3)-(8)))-((8)-(2))))+(((2)-(4))+(6)-(2))+(6-(1))-((2+9)-(3+...
output:
-151
result:
wrong answer 1st numbers differ - expected: '-63', found: '-151'