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;
}