围成一个圈,追人肯定会走较小的那半圈,
从中判断最小值。

#include<iostream>
using namespace std;
int a[100010] = {0};

int main(){
    int n;
    cin >> n;
    int l = 0, sum = 0;//l在前,i在后
    for(int i = 0; i < n; i++){
         cin >> a[i];
         sum += a[i];
         }
     int temp = 0;//两者间的距离
     int ans = 0, jin;
     for(int i = 0; i < n; i++){
     while(temp < sum / 2){//l为前面的
     temp += a[l % n];//l % n因为是一个圈,在l = n时 又从a[0]开始加起
     l++;
     }
     jin = min(temp, sum - temp);//sum可能为奇数,一般会向下取整,判断较小的那半圈
     ans = max(ans, jin);//最大值
     temp -= a[i];
     }
     cout << ans << endl;
     return 0;
}