WHY? 第3个点TLE
查看原帖
WHY? 第3个点TLE
1050072
a18981826590楼主2024/4/3 13:59
#include<bits/stdc++.h>
using namespace std;
int a[100010],m,n,v,w,x=INT_MIN,y,z;
int main(){
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++){
		scanf("%d",&a[i]);
		if(a[i]>x) x=a[i];
		y+=a[i];
	}
	while(x<=y){
		v=w=0;
		z=1;
		for(int i=0;i<n;i++){
			if(a[i]>x+(y-x)/2){
				v=1;
				break;
			}
			if(w+a[i]<=x+(y-x)/2) w+=a[i];
			else{
				w=a[i];
				z++;
			}
		}
		if(z<m) y=x+(y-x)/2-1;
		else if(z>m||v) x+=(y-x)/2+1;
		else y--;
	}
	printf("%d",x);
	return 0;
}

https://www.luogu.com.cn/record/154121323

2024/4/3 13:59
加载中...