好抽象啊为什么
  • 板块灌水区
  • 楼主creepaid_awa
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/7/23 19:57
  • 上次更新2024/7/23 20:11:18
查看原帖
好抽象啊为什么
755242
creepaid_awa楼主2024/7/23 19:57
#include<bits/stdc++.h>
using namespace std;

const int inf=1e6+5;

int n,m,ans,a[inf];
int d[inf],s[inf],t[inf];

inline int read(){
    int x=0,f=0;char ch=getchar();
    while(!isdigit(ch))f|=ch=='-',ch=getchar();
    while(isdigit(ch))x=x*10+(ch^48),ch=getchar();
    return f?-x:x;
}

inline bool check(int x){
    int b[n+1];
    for(int i=1;i<=n;++i)
        b[i]=a[i]-a[i-1];
    for(int i=1;i<=x;++i){
        b[s[i]]-=d[i];
        b[t[i]+1]+=d[i];
    }
    for(int i=1;i<=n;++i){
        b[i]+=b[i-1];
        if(b[i]<0)return true;
    }
    return false;
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    n=read();m=read();
    for(int i=1;i<=n;++i)
        a[i]=read();
    for(int i=1;i<=m;++i)
        d[i]=read(),s[i]=read(),t[i]=read();
    int l=1,r=m+1;
    while(l<=r){
        int mid=l+((r-l)>>1);
        if(!check(mid))l=mid+1;
        else r=mid-1,ans=mid;
        //cout<<' ';
    }
    if(ans!=0)cout<<"-1\n";
    cout<<ans;
    return 0;
}

输入

10 10
42323424 633675939 990396626 965164370 965164370 965164370 972489810 619351082 619351082 0
586780256 2 9
316471206 3 7
42323424 1 3
8081621 3 9
36667522 3 7
110729 3 6
4572259 2 9
7436169 7 9
3834281 3 9
8646496 4 9

去掉注销和不去掉注销答案完全不一样,为什么呢

2024/7/23 19:57
加载中...