因为小朋友们是围成一个圆圈坐,那么一个圆中,最远的两点的距离是直径上的两个端点,求出来圆周长的一半,
就可以确定直径上的两个端点,直径的第一个端点是第一个小朋友,然后枚举每个小朋友距离第一个小朋友的距离,如果这个距离>=周长的一半,那么这个小朋友就是直径的另一个端点。记录这个距离,然后接着枚举以第二个小朋友为直径的一个端点,到直径的另一个端点的距离,记录这个距离,直到枚举到最后一个小朋友。然后取这些距离中的最大值

#include <iostream>
using namespace std;
const int maxn = 100010;
int arr[maxn];
int main()
{
    int n;
    cin >> n;
    int sum = 0;
    for(int i=0;i<n;i++){
        cin>>arr[i];
        sum+=arr[i];
    }
    int ans=0;
    int right=0;
    int j=0;
    for(int i=0;i<n;i++){
        while(right<sum/2){
            right+=arr[j%n];
            j++;
        }
        ans=max(ans,min(right,sum-right));
        right-=arr[i];
    }
    cout<<ans;
    return 0;
}