求助
  • 板块学术版
  • 楼主liufukang
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/7/15 20:44
  • 上次更新2023/11/4 14:42:13
查看原帖
求助
139509
liufukang楼主2021/7/15 20:44

错误信息:

[Error] Id returned 1 exit stauts

经检验已得出不是因为运行程序未关闭造成的,函数名的调用貌似也没有多大问题

CODE

#include<bits/stdc++.h>
using namespace std;
const int maxN=2e5+9;
int f[maxN][29];
int n,k;
void init(){
	for (int i=1;i<=n;i++) cin>>f[i][0];
	for (int len=1;(1<<len)<=n;len++){
		for (int i=1;i+(1<<len)-1<=n;i++){
			f[i][len]=max(f[i][len-1],f[i+(1<<len-1)][len-1]);
		}
	}
}
int query(int l,int r){
	int len=0;
	for (;;len++){
		if ((1<<len+1)>(r-l+1)) break;
	}
	return max(f[l][len],f[r-(1<<len)+1][len]);
}
bool check(int x){
	int len=n/x;
	long long energy=0;
	for (int i=1;i<=x;i++){
		int l=(i-1)*len+1,r=i*len;
		energy+=query(l,r);
	}
	return energy>=k;
}
int bfind(int l,int r){
	int ans=0;
	while (l<=r){
		int mid=l+r>>1;
		if (check(mid)) ans=mid,r=mid-1;
		else l=mid+1;
	}
	return ans;
}
int main(){
	while (cin>>n>>k){
		if (n==-1&&k==-1) break;
		init();
		cout<<bfind(1,n)<<endl;
	}
	return 0;
}

跪谢

2021/7/15 20:44
加载中...