对于环类的问题,用双指针、尺取法的时候要注意high取模(high%n)并且low要从0走到n-1才行,不能像直线型问题high走到n-1就可以停了。

#include <bits/stdc++.h>
 
using namespace std;
 
int arr[100050];
int main(void)
{
    int n;cin>>n;int sum=0;for (int i=0;i<n;i++) cin>>arr[i],sum+=arr[i];
    sum/=2;if (sum==0) sum=1;int low=0,high=0;long long ans=-1,a=0;
    while(low<n)
    {
        a+=arr[high%n];
        if (a<=sum) ans=max(ans,a); 
        while(a>sum&&low<n)
        {
            a-=arr[low];low++;
        }
        high=(high+1)%n;
    }
    cout<<ans;
}