互关
2025-07-22 11:14:19
发布于:广东
8阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
struct node{
int d,s,t;
};
long long n,m,l,r,z,p,i,j,a[1000005],b[1000005],v[1000005];
node c[1000005];
bool check(int m){
int i;
memset(b,0,sizeof b);
memset(v,0,sizeof v);
for(i=1;i<=m;i++){
b[c[i].s]+=c[i].d;
b[c[i].t+1]-=c[i].d;
}
for(i=1;i<=n;i++){
v[i]=v[i-1]+b[i];
if(v[i]>a[i]){
return 1;
}
}
return 0;
}
int main(){
cin>>n>>m;
l=1;
r=m;
for(i=1;i<=n;i++){
cin>>a[i];
}
for(i=1;i<=m;i++){
cin>>c[i].d>>c[i].s>>c[i].t;
}
while(l<=r){
z=l+r>>1;
if(check(z)){
p=z;
r=z-1;
continue;
}
l=z+1;
}
if(p==0){
cout<<0;
return 0;
}
cout<<-1<<endl;
cout<<p;
return 0;
}
这里空空如也
有帮助,赞一个