记录编号 582080 评测结果 AAAAAAAAAAAA
题目名称 售票系统 最终得分 100
用户昵称 Gravatar宇战 是否通过 通过
代码语言 C++ 运行时间 0.758 s
提交时间 2023-09-02 15:56:10 内存使用 15.74 MiB
显示代码纯文本
#include<bits/stdc++.h>
    using namespace std;
    int n,m,s,k,o;
    const int N=1e5*4;
    struct node{
        int L,R;
        long long sum,lazy,min=0x3f3f3f3f;
    }t[N];
    long long a[N];
    void build(int p,int l,int r){
        t[p].L=l;
        t[p].R=r;
        if(l==r){
            t[p].min=a[l];
            return ;
        }
        int mid=(l+r)/2;
        build(p<<1,l,mid);
        build(p<<1|1,mid+1,r);
        t[p].min=min(t[p*2].min,t[p*2+1].min);
    }
    void spread(int p){
        if(t[p].lazy){
            t[p*2].min+=(long long)t[p].lazy;
            t[p*2].lazy+=t[p].lazy;
            t[p*2+1].min+=(long long)t[p].lazy;
            t[p*2+1].lazy+=t[p].lazy;
            t[p].lazy=0;
        }
    }
    void change(int p,int l,int r,int c){
        if(t[p].L>=l&&t[p].R<=r){
            t[p].min+=c;
            t[p].lazy+=c;
            return;
        }
        spread(p);
        int mid=(t[p].L+t[p].R)/2;
        if(l<=mid)change(p*2,l,r,c);
        if(r>mid)change(p*2+1,l,r,c);
        t[p].min=min(t[p*2].min,t[p*2+1].min);
    }
    long long ask(int p,int l,int r){
        if(l<=t[p].L&&r>=t[p].R){
            return t[p].min;
        }
        spread(p);
        int mid=(t[p].L+t[p].R)/2;
        long long val=0x3f3f3f3f;
        if(l<=mid)val=min(ask(p*2,l,r),val);
        if(r>mid)val=min(ask(p*2+1,l,r),val);
        return val; 
   }
    int main(){
        freopen("railway.in","r",stdin);
        freopen("railway.out","w",stdout);
          cin>>n>>m>>k;
          for(int i=1;i<=n;i++){
              a[i]=m;
          }
          build(1,1,n-1);
          for(int i=1;i<=k;i++){
              int l,r,p;
              cin>>l>>r>>p;
              change(1,l,r-1,-p);
              if(ask(1,l,r-1)<0){
                  cout<<"NO"<<endl;
                  change(1,l,r-1,p);
              }else{
                  cout<<"YES"<<endl;
              }
          }
    }