暴力为神魔答案错误?

求神牛门帮忙解答一下

#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
int m,n;
int sum[202020];
int a,b,x,i;
struct bal
{
    int sum,l,r;
}tr[620210];
void re(int &x)
{
   x=0;
   char c=getchar();
   while (c<'0'||c>'9') 
   c=getchar();
   while (c>='0'&&c<='9')
   {
       x=x*10+c-'0';
       c=getchar();
   }
}
void build(int p,int l,int r)
{
    tr[p].l=l;tr[p].r=r;
    if(l==r)
    {
        tr[p].sum=sum[l];
        return ;
    }
    int mid=(l+r)/2;
    build(p*2,l,mid);
    build(p*2+1,mid+1,r);
    tr[p].sum=tr[p*2].sum+tr[p*2+1].sum;
    return ;
}
void change(int p,int l,int r,int k)
{
    if(a>r||b<l)
    return ;
    if(l==r)
    {
        tr[p].sum-=k;
        if(tr[p].sum<0)
        {
            cout<<"-1"<<endl<<i;
            exit(0);
        }
        return ;
    }
    int mid=(l+r)/2;
    if(a<mid) change(p*2,l,mid,k);
    if(mid<=b) change(p*2+1,mid+1,r,k);
    tr[p].sum=tr[p*2].sum+tr[p*2+1].sum;
    return ;
}
int main()
{
    cin>>m>>n;
    for(i=1;i<=m;i++)
    re(sum[i]);
    build(1,1,m);
    for(i=1;i<=n;i++)
    {
        re(x);re(a);re(b);
        change(1,1,m,x);
    }
    cout<<"0"<<endl;
    return 0;
}

0 条评论

目前还没有评论...

信息

ID
1782
难度
8
分类
模拟 | 其他 | 二分查找数据结构 | 线段树 点击显示
标签
递交数
8171
已通过
1215
通过率
15%
被复制
5
上传者