用python刷蓝桥杯试题的for循环超时问题

题中要求读取n行数据时,使用for i in range(n): 来循环input()的时候,当n大于100000时就会出现超时错误T T,请问要怎么解决呢?
比如这道题:http://lx.lanqiao.cn/problem.page?gpid=T18
我用下面这种写法就只能过50%

def P1(x,y):
    boxes[x-1] = y
def P2(x,y):
    ans = sum(boxes[x-1:y])
    return ans
def P3(x,y):
    ans = max(boxes[x-1:y])
    return ans
if __name__ =="__main__":
    n,m = map(int,input().split( ))
    boxes = list(map(int,input().split( )))
    ans = 0
    for i in range(m):
        pro = list(map(int,input().split( )))
        p = pro[0]
        x = pro[1]
        y = pro[2]
        if p ==1:
            P1(x,y)
        elif p ==2:
            ans = P2(x,y)
            print(ans)
            ans = 0
        elif p ==3:
            ans = P3(x,y)
            print(ans)
            ans = 0

https://blog.csdn.net/CxsGhost/article/details/104150547