比赛 进阶指南第0章测试 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 借教室 最终得分 100
用户昵称 exil 运行时间 4.361 s
代码语言 C++ 内存使用 9.43 MiB
提交时间 2026-03-14 10:10:47
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
int qu[1000005];
int zhi[1000005];
int l[1000005],r[1000005],z[1000005];
signed main(){
    freopen("classrooms.in","r",stdin);
    freopen("classrooms.out","w",stdout);
    int n,m;
    cin>>n>>m;
    for(int i = 1;i<=n;i++){
        cin>>zhi[i];
    }
    
    for(int i = 1;i<=m;i++){
        cin>>z[i]>>l[i]>>r[i];
    }
    int li=1,ri=m;
    int ans=0;
    while(li<=ri){
        int mid=(li+ri)/2;
        for(int i = 1;i<=n;i++)qu[i]=0;
        for(int i = 1;i<=mid;i++){
            qu[l[i]]-=z[i];
            qu[r[i]+1]+=z[i];
        }
        int pan=0;
        for(int i = 1;i<=n;i++){
            qu[i]+=qu[i-1];
           
            if(qu[i]+zhi[i]<0){
                
                pan=1;
                break;
            }
        }
        
        if(pan==1){
            ans=mid;
            ri=mid-1;
        }
        else li=mid+1;
        
    }
    if(ans==0)cout<<0;
    else{
        cout<<-1<<endl<<ans;
    }
    return 0;
}