求助!我代码本地测试样例有问题!不知道哪错了!
查看原帖
求助!我代码本地测试样例有问题!不知道哪错了!
895690
gghack_Nythix楼主2022/12/19 12:32

RT

#include <bits/stdc++.h>
using namespace std;
#define MAX (100000 + 7)
long long a[MAX];
long long check(long long x,long long n,long long k)//之所以写long long是因为要二分最小和最大 
{
	int ans = 0,tmp = 0;
	for(int i = 1;i <= n;i ++)
	{
		tmp += a[i];
		if(tmp < 0)
		{
			tmp = 0;
		}
		if(tmp >= k)//写了一道题 
		{
			tmp = 0;//初始 
			ans ++;//刷的题+1 
		}
	}
	return ans;
}
int main()
{
	long long l,k,r = -1;
	cin >> l >> k;
	for(int i = 1;i <= l;i ++)
	{
		cin >> a[i];
		r = max(r,a[i]);
	}
	long long def = r;
	long long l2 = 1,mid,ans1 = -1;
	while(l2 <= r)
	{
		mid = (l2 + r) / 2;
		if(check(mid,l2,k) <= k)
		{
			r = mid - 1;
			ans1 = mid;
		}
		else
		{
			l2 = mid + 1;
		}
	}
	cout << ans1 << " ";
	ans1 = -1,l2 = 1,r = def;
	while(l2 <= r)
	{
		mid = (l2 + r) / 2;
		if(check(mid,l2,k) >= k)
		{
			l2 = mid + 1;
			ans = mid;
		}
		else
		{
			r = mid - 1;
		}
	}
	cout << ans1 << " ";
	return 0;
}
2022/12/19 12:32
加载中...