前言:这一题有点坑,一开始没啥思路,我们每次补充体力都要恢复满,所以我们尽早恢复是最好的策略
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
const int N = (int)2e5 + 10;
int a[N];
int sum[N];
int n,m;
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> a[i]; sum[i] = sum[i - 1] + a[i];
}
int now = m; int ti = 0;
// 把时间都耗在前面
for (int i = 1; i <= n; i++) {
if (now > (sum[n] - sum[i - 1])) {
ti += (n - i);
cout << ti; return 0;
}
if (a[i] == 0) {
ti += (m - now);
now = m;
}
else {
now -= a[i];
if (now <= 0) {
cout << "NO"; return 0;
}
}
ti++;
}
return 0;
}