求助,10分!!!
查看原帖
求助,10分!!!
357900
猜一猜我是谁楼主2022/1/21 22:13
#include<bits/stdc++.h>
using namespace std;
int n,m,ans,qzh[1000011],cf[1000005],r[1000005],d[1000005],s[1000005],t[1000005];
bool f(int x){
    memset(qzh,0,sizeof(qzh));
    for(int i=1;i<=x;i++){
        cf[s[i]]+=d[i];
        cf[t[i]+1]-=d[i]; 
    }
    for(int i=1;i<=n;i++){
        qzh[i]=qzh[i-1]+cf[i];
        if(qzh[i]>r[i]) return 0;
    }
    return 1;
} 
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>r[i];
    for(int i=1;i<=m;i++) cin>>d[i]>>s[i]>>t[i];
    int left=1,right=m; 
    if(f(m)){
        cout<<"0";
        return 0;
    }
    while(left<right){
        int mid=(left+right)/2;
        if(f(mid)) left=mid+1;
        else right=mid;
    }
    cout<<"-1"<<endl<<ans;
}

2022/1/21 22:13
加载中...