52求调
查看原帖
52求调
431095
Druid楼主2024/7/11 13:40
#include <bits/stdc++.h>
using namespace std;
long long n,a[20480],l,r;
bool check(int cost)
{
	for(int i=1;i<=n;i++)
	{
		if(a[i-1]+max(a[i],a[i+1])>cost)
			return 0;
	}
	return 1;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		r+=a[i];
	}
	a[0]=a[n];
	a[n+1]=a[1];
	long long mid;
	while(l<r)
	{
		mid=(l+r)/2;
		if(check(mid))
			r=mid;
		else
		{
			l=mid+1;
		}
	}
	cout<<r;
}
2024/7/11 13:40
加载中...