#include <iostream>
using namespace std;
int n,q,cai[200001],start[200001];
long long w;
int main() {
scanf("%d%d%d",&n,&q,&w);
for (int i=1; i<=n; ++i) {
scanf("%d",&cai[i]);
start[i]=cai[i];
}
for (int lun=1; lun<=q; lun++) {
int l,r,d,total=0;
scanf("%d%d%d",&l,&r,&d);
for (int i=1; i<=n; ++i) {
cai[i]=start[i];
if (i>=l && i<=r) {
cai[i]+=d;
start[i]+=d;
}
total+=cai[i];
}
int tmp = 0;
long long hp = w;
while (hp > 0) {
int si=0;
for (int i = 1; i <= n; ++i) {
if (hp <= cai[i]){
si=1;
break;
}
hp -= cai[i];
cai[i] *= 2;
total += cai[i];
tmp++;
}
if (si) break;
}
cout << tmp << endl;
}
return 0;
}
期望得分45pts,但WA on #1~7、11~12。
看着大佬们线段树加二分的神仙题解,我陷入了沉思
希望能在代码基础上解决WA的问题,解决必关