#include<bits/stdc++.h>
using namespace std;
#define int long long
#define debug() puts("I WILL AK")
#define N 200007
inline int rd(){
int ans=0,w=0;
char ch=getchar();
while (ch<'0'||ch>'9'){
w|=ch=='-',ch=getchar();
}
while(ch>='0'&&ch<='9'){
ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
}
return w?-ans:ans;
}
inline void wr(int x){
if(x<0)
putchar('-'),x=-x;
if(x<=9){
putchar(x+'0');
return;
}
wr(x/10);
putchar(x%10+'0');
}
struct tree{
int val,lazy;
}tr[N<<2];
int a[N],n,q,w,b[N];
inline void push_up(int rt){
tr[rt].val=tr[rt<<1].val+tr[rt<<1|1].val;
}
inline void push_down(int rt,int l,int r){
if(tr[rt].lazy!=0){
tr[rt<<1].lazy+=tr[rt].lazy;
tr[rt<<1|1].lazy+=tr[rt].lazy;
int mid=(l+r)>>1;
tr[rt<<1].val+=tr[rt].lazy*(mid-l+1);
tr[rt<<1|1].val+=tr[rt].lazy*(r-mid);
tr[rt].lazy=0;
}
}
int query(int rt,int l,int r,int ql,int qr){
if(ql>qr) return 0;
if(ql<=l&&qr>=r) return tr[rt].val;
push_down(rt,l,r);
int mid=(l+r)>>1;
if(qr<=mid) return query(rt<<1,l,mid,ql,qr);
if(ql>mid) return query((rt<<1)|1,mid+1,r,ql,qr);
return query(rt<<1,l,mid,ql,qr)+query((rt<<1)|1,mid+1,r,ql,qr);
}
void update(int rt,int l,int r,int ul,int ur,int add){
if(ul<=l&&ur>=r){
tr[rt].val+=add*(r-l+1);
tr[rt].lazy+=add;
return;
}
push_down(rt,l,r);
int mid=(l+r)>>1;
if(ul<=mid) update(rt<<1,l,mid,ul,ur,add);
if(ur>mid) update((rt<<1)|1,mid+1,r,ul,ur,add);
push_up(rt);
}
void build(int rt,int l,int r){
if(l==r) tr[rt].val=a[l];
else{
int mid=(l+r)>>1;
build(rt<<1,l,mid);
build(rt<<1|1,mid+1,r);
push_up(rt);
}
}
signed main(){
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
n=rd(),q=rd(),w=rd();
for(int i=1;i<=n;++i){
a[i]=rd();
b[i]=b[i-1]+a[i];
}
build(1,1,n);
for(int i=1;i<=q;++i){
int l=rd(),r=rd(),k=rd();
update(1,1,n,l,r,k);
int sm=query(1,1,n,1,n);
int res=0;
int pw=0;//乘上2的pw次方
int hel=w;
while(sm*(1<<pw)<hel){
res+=n;
hel-=sm*(1<<pw);
++pw;
}
//cout<<pw<<'\n';
int ll=1,rr=n,ans=0;
while(ll<=rr){
int mid=(ll+rr)>>1;
if(query(1,1,n,1,mid)*(1<<pw)<hel){
ll=mid+1;
ans=mid;
}
else{
rr=mid-1;
}
}
wr(res+ans),putchar('\n');
}
return 0;
}
本地跑了1.13s(机子是洛谷评测机速度的1.2-1.4倍)