- 借教室
- 2020-11-29 11:32:25 @
求神牛门帮忙解答一下
#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 条评论
目前还没有评论...