奇怪的全RE,自己2天未调好
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=100010;
ll n,m,q,w;
ll val[N*4],sum[N*4],add[N*4],mul[N*4];
ll read(){
char ch=getchar();
ll x=0;bool f=0;
while(ch<'0'||ch>'9'){
if(ch=='-')f=1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<3)+(x<<1)+(ch^48);
ch=getchar();
}
if(f)x=-x;
return x;
}
void build(ll k,ll l,ll r){
mul[k]=1;
if(l==r){
sum[k]=val[r];
return ;
}
ll mid=(l+r)>>1;
build(k<<1,l,mid);
build(k<<1|1,mid+1,r);
sum[k]=(sum[k<<1]+sum[k<<1|1]);
return;
}
void change(ll k,ll l,ll r,ll u){
add[k]=(mul[u]*add[k]+add[u]);
mul[k]=(mul[k]*mul[u]);
sum[k]=(sum[k]*mul[u]+add[u]*(r-l+1));
}
void pushdown(ll k,ll l,ll r){
ll mid=(l+r)>>1;
change(k<<1,l,mid,k);
change(k<<1|1,mid+1,r,k);
add[k]=0;
mul[k]=1;
return;
}
void Mul(ll k,ll l,ll r,ll x,ll y,ll v){
if(l>=x&&r<=y){
mul[k]=(mul[k]*v);
add[k]=(add[k]*v);
sum[k]=(sum[k]*v);
return ;
}
pushdown(k,l,r);
ll mid=(l+r)>>1;
if(x<=mid)
Mul(k<<1,l,mid,x,y,v);
if(mid<y)
Mul(k<<1|1,mid+1,r,x,y,v);
sum[k]=(sum[k<<1]+sum[k<<1|1]);
return;
}
void Add(ll k,ll l,ll r,ll x,ll y,ll v){
if(l>=x&&r<=y){
add[k]=add[k]+v;
sum[k]=(sum[k]+v*(r-l+1));
return ;
}
pushdown(k,l,r);
ll mid=(l+r)>>1;
if(x<=mid)
Add(k<<1,l,mid,x,y,v);
if(mid<y)
Add(k<<1|1,mid+1,r,x,y,v);
sum[k]=(sum[k<<1]+sum[k<<1|1]);
return ;
}
ll query(ll k,ll l,ll r,ll x,ll y){
if(l>=x&&r<=y)
return sum[k];
pushdown(k,l,r);
ll mid=(l+r)>>1;
ll ans=0;
if(x<=mid)
ans+=query(k<<1,l,mid,x,y);
if(mid<y)
ans+=query(k<<1|1,mid+1,r,x,y);
return ans;
}
ll solve(ll l,ll r,ll w1){
if(l==r&&query(1,1,n,l,l)<w1){
return l;
}
ll mid=(l+r)/2;
ll cnt=query(1,1,n,1,mid);
if(cnt>=w1){
solve(l,mid,w1);
}else{
solve(mid+1,r,w1);
}
}
int main(){
freopen("wxty.in","r",stdin);
freopen("wxty.out","w",stdout);
n=read();q=read();w=read();
for(int i=1;i<=n;i++){
val[i]=read();
}
build(1,1,n);
for(int i=1;i<=N*4;i++){
mul[i]=1;
}
while(q--){
ll ans=0,times=1;
ll l,r,d,w1=w;
l=read();r=read();d=read();
Add(1,1,n,l,r,d);
//cout<<query(1,1,n,1,n)<<endl;
while(w1>query(1,1,n,1,n)*times){
w1-=query(1,1,n,1,n)*times;
//cout<<w1<<" ";
ans+=n;
times*=2;
}
w1/=times;
ans+=solve(1,n,w1);
cout<<ans-1<<endl;
}
return 0;
}