Wa #13,95pts悬关求调
查看原帖
Wa #13,95pts悬关求调
877691
MorLeaves楼主2025/1/15 17:02
#include<iostream>
#include<cstdio>
typedef long long ll;
using namespace std;
int n,k,a[1000005];
bool check(ll x) {
	int cnt0=0,cnt1=0,cnt=0;
	for(int i=1;i<=n;i++) {
		cnt0+=a[i]==0;
		cnt1+=a[i]==1;
		if (cnt0*cnt1>x) {
			cnt++;
			cnt0=a[i]==0;
			cnt1=a[i]==1;
		}
	}
	return cnt<k;
}
int main() {
	scanf("%d %d",&n,&k);
	bool bo=true;
	for(int i=1;i<=n;i++) {
		scanf("%1d",&a[i]);
		if (i!=1&&a[i]!=a[i-1]) bo=false;
	}
	if (bo||n==k) {
		printf("0");
		return 0;
	}
	ll l=0,r=1e15;
	while(l<r) {
		ll mid=(l+r)>>1;
		if (check(mid)) r=mid;
		else l=mid+1;
	}
	printf("%lld",r);
	return 0;
}
2025/1/15 17:02
加载中...