求调!不忘恩情!玄关!
查看原帖
求调!不忘恩情!玄关!
787693
dangdang07楼主2024/10/4 22:18

10分代码,为什么输入样例,本来while应该会执行2次,我的为啥只执行1次?!

#include<bits/stdc++.h>
using namespace std;
long long n,m,a[1000001],cf[1000003],c[1000001][4];
bool find(){
	long long x=0;
	for(int i=1;i<=n;i++){
		x+=cf[i];
		if(a[i]<x){
			return 0;
		}
	}
	return 1;
}
void ccf(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=m;i++){
		cin>>c[i][0]>>c[i][1]>>c[i][2];
		cf[c[i][1]]+=c[i][0];
		cf[c[i][2]+1]-=c[i][0];
	}
	if(find()){
		cout<<"0"<<endl;
		return ;
	}
	int l=1,r=m,mid;
	while(l<=r){
		mid=(l+r)>>1;
		cout<<l<<" "<<mid<<" "<<r<<endl;
		memset(cf,0,sizeof(cf));
		for(int i=1;i<=mid;i++){
			cf[c[i][1]]+=c[i][0];
			cf[c[i][2]+1]-=c[i][0];
			if(find()){ l=mid+1; } else{ r=mid-1; }
		}
	}
	cout<<"-1"<<endl<<l;
}
int main(){
	ccf();
	return 0;
}
2024/10/4 22:18
加载中...