家人们帮忙看看为啥一分没有哇
查看原帖
家人们帮忙看看为啥一分没有哇
767042
Smart_Jason楼主2023/8/19 09:40
#include<cstdio>
using namespace std;
long long int n,k,a[500005],cnt,sum,l,r,mid,bz[500005];
bool pd;
int main(){
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		bz[i]=a[i];
	}
	l=1,r=199999999999;
	while(l<=r){
		mid=(l+r)/2;
		pd=0;
		sum=0;
		cnt=k;
		for(int i=n;i>0;i--){
			if(bz[i]>=0){
				cnt--;
				if(cnt<0){
					pd=1;
					break;
				}
				if(mid<=bz[i]){
					pd=1;
					break;
				}
				if(mid>bz[i]){
					sum++;
					bz[i]=-1;
				}
				for(int j=i-1;j>=1;j--){
					if(mid-(i-j)*(i-j)>0){
						bz[j]=bz[j]-(mid-(i-j)*(i-j));
						if(bz[j]<0){
							sum++;
						}
					}else{
						break;
					}
				}
			}
		}
		if(sum==n&&pd==0){
			r=mid-1;
		}else{
			l=mid+1;
		}
		for(int i=1;i<=n;i++){
			bz[i]=a[i];
		}
	}
	printf("%d",r);
	return 0;
} 
2023/8/19 09:40
加载中...