题解 | #丢手绢#
丢手绢
https://ac.nowcoder.com/acm/problem/207040
算法:双指针
时间复杂度:O(n)
思路:
以为右端点,为左端点;
向右走,一开始距离必为之间距离;
当走到某点时,距离变为之外距离,且再向前走只会是距离减小;
所以停止,开始走,使距离增大,此时距离为之外距离;
当走到某点时,距离又变为之间距离,继续走……
n=int(input())
a=[]
for i in range(n):
a.append(int(input()))
s=sum(a)
j=0;ans=0;cnt=0
for i in range(n):
cnt+=a[i]
while j<=i and s-cnt<cnt:
ans=max(ans,s-cnt)
cnt-=a[j]
j+=1
ans=max(ans,cnt)
print(ans)