| Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 81406 | sh25_wuyy | 借教室(Day 2) | C++ | 通过 | 521 MS | 23712 KB | 970 | 2026-01-04 17:59:59 |
#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>>n>>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; }