提交时间:2026-01-04 17:59:10
运行 ID: 81405
#include <iostream> #include <cstring> using namespace std; long long n,m; long long r[1000005], d[1000005], s[1000005], t[1000005]; long long delta[1000005]; bool check(long long num){ memset(delta,0,sizeof(delta)); for(long long i=1;i<=num;++i){ delta[s[i]]+=d[i]; delta[t[i]+1]-=d[i]; }long long sum=0; for(long long i=1;i<=n;++i){ sum+=delta[i]; if(sum>r[i]){ return 0; } }return 1; }int main(){ cin>> >>m; for(long long i=1;i<=n;++i){ cin>>r[i]; }for(long long i=1;i<=m;++i){ cin>>d[i]>>s[i]>>t[i]; }long long left=0,right=m; bool ans=1; while(right>left){ long long mid=(left+right+1)/2; if(check(mid)){ left=mid; }else{ ans=0; right=mid-1; } }if(ans){ cout<<0<<endl; }else{ cout<<-1<<endl<<left+1<<endl; }return 0; }