这是我在codechef上遇到NZEC错误但在本地IDE上执行得很好的代码。
def kadane(arr,n):
curr_sum=0
max_so_far =0
for i in range(n):
curr_sum=curr_sum+arr[i]
if(max_so_far<curr_sum):
max_so_far=curr_sum
if(curr_sum<0):
curr_sum=0
return max_so_far
def maxSub(arr,n,k):
kadane_sum=kadane(arr,n)
if (k==1):
return kadane_sum
curr_prefix,curr_suffix,max_prefix,max_suffix=0,0,0,0
for i in range(n):
curr_prefix +=arr[i]
max_prefix=max(curr_prefix,max_prefix)
total=curr_prefix
for i in range(n-1,-1,-1):
curr_suffix=curr_suffix+arr[i]
max_suffix=max(curr_suffix,max_suffix)
if total<0:
ans=max(max_suffix+max_suffix,kadane_sum)
else:
ans=max(max_suffix+max_prefix+(total*(k-2)),kadane_sum)
return ans
我认为错误在于输入时程序启动,因为逻辑是可靠的。
for _ in range(int(input())):
n,k=map(int,input().split())
l=list(map(int,input().split()))
print(maxSub(l,n,k))