为什么会TLE4个点
查看原帖
为什么会TLE4个点
638332
Blamol_Von_Lee楼主2023/12/20 18:36
#include<iostream>
using namespace std;
int a[100010]={};
long long n,m,ans=-1;
#define INF 10000000000000000
long long ck(long long x)
{
	long long w=0,s=0;
	for(int i=1;i<=n;i++)
	{
		w+=a[i];
		if(w<=0)
		w=0;
		if(w>=x)
		{
			s++;	
			w=0;
		}
		
	}
	return s;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	long long l=1,r=INF;
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(ck(mid)<m) r=mid-1; 
		else if(ck(mid)>m) l=mid+1;
		else 
		{
			ans=mid;
			r=mid-1;
		}
	}
	cout<<ans<<" ";
	if(ans==-1) return 0;
	l=1;r=INF;
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(ck(mid)<m) r=mid-1; 
		else if(ck(mid)>m) l=mid+1;
		else
		{
			 ans=mid;
			 l=mid+1;
		 }
	}
	cout<<ans;
 } 
2023/12/20 18:36
加载中...