提交时间:2023-08-09 17:48:08
运行 ID: 81650
#include<bits/stdc++.h> using namespace std; int n; int a[100001]; int b[100001]; unsigned long long l,r,mid; int check1(int x,int y){ if((b[n]-x)/2<mid) return 0; return 1; } int check(int x){ for(int i=1;i<=n;i++){ for(int j=i+1;j<=n+(i-1);j++){ if(b[j]-b[i-1]>=mid&&b[j]-b[i-1]<=r&&check1(b[j]-b[i-1],mid)) return 1; } } return 0; } int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) b[i]=a[i]+b[i-1]; for(int i=n+1;i<=2*n;i++) b[i]=a[i-n]+b[i-1]; l=1,r=b[n]/3; while(l<r){ mid=(l+r+1)/2; if(check(mid)) l=mid+1; else r=mid; } cout<<r; return 0; }