QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#391992#6750. CalculateKir1sameWA 71ms11156kbPython31.3kb2024-04-17 00:02:482024-04-17 00:02:48

Judging History

你现在查看的是最新测评结果

  • [2024-04-17 00:02:48]
  • 评测
  • 测评结果:WA
  • 用时:71ms
  • 内存:11156kb
  • [2024-04-17 00:02:48]
  • 提交

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)

                

Details

Tip: Click on the bar to expand more detailed information

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'