第十五届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组试题 H: 拔河

第十五届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组试题 H: 拔河_第1张图片
动态维护数组,set优化,二分。



#include
using namespace std;
#define int long long 
const int n=1e6;
int a,b[n],c; 
signed main()
{
	cin>>a;
	for(int i=1;i<=a;i++)
	{
		cin>>b[i];
	}
	sett;
	int an=1e18;
	for(int i=a;i>=1;i--)
	{
		int v=0;
		for(int j=i+1;j<=a;j++)
		{
			v+=b[j];
			t.insert(v);
		}
		v=0;
		for(int j=i;j>=1;j--)
		{
			v+=b[j];
			if(t.size()==0)
			{
				continue;
			}
			if(v>*t.rbegin())
            {
                an=min(an,v-*t.rbegin());
            }
            else if(v<=*t.begin())
            {
                an=min(an,*t.begin()-v);
        	}
			else
			{
				auto s=t.lower_bound(v);
				an=min(an,*s-v);
				s--;
				an=min(an,v-*s);
			}
		
		}
	}
	cout<

你可能感兴趣的:(蓝桥杯,c语言,c++)