85求助!#8#15#16WA
查看原帖
85求助!#8#15#16WA
158023
djy070113楼主2023/1/19 14:46
#include<bits/stdc++.h>
using namespace std;
int x[100001];
int l;
long long le,ri,mid,a1,k,q;
bool f=0;
bool check(long long,int);
int main(){
	cin>>l>>k;
	for(int i=1;i<=l;i++){
		cin>>x[i];
	}
	le=0;
	ri=1e15;
	while(le<ri){
		mid=(le+ri)>>1;
		if(check(mid,1)){
			if(mid!=0)f=1;
			le=mid+1;
		}else{
			ri=mid;
		}
		if(ri==1&&le==0&&q==k){
			le=1;
		}
	}
	a1=le;
	le=0;
	ri=1e15;
	while(le<ri){
		mid=(le+ri+1)>>1;
		if(check(mid,2)){
			if(mid!=0)f=1;
			le=mid;
		}else{
			ri=mid-1;
		}
	}
	if(f){
		cout<<a1<<" "<<le;
	}else{
		cout<<-1;
	}
	return 0;
}
bool check(long long a,int flag){
	long long c=0;
	q=0;
	for(int i=1;i<=l;i++){
		c+=x[i];
		if(c<0){
			c=0;
		}
		if(c>=a){
			c=0;
			q++;
		}
	}
	if(q==k){
		f=1;
	}
	if(flag==1)return (q>k);
	if(flag==2)return (q>=k);
}
2023/1/19 14:46
加载中...