因为题目问的是能否构成严格递增,从前往后模拟,令第i个堆的高度为hi,因为只能从前一个抽出来给后一个,所以如果中途中有构不成相应高度的情况直接break
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
long long h[150];
long long res=0;
bool flag=1;
for(int i=0;i<n;i++){
cin>>h[i];
}
for(int i=0;i<n;i++){
res+=h[i]-i;
if(res<0){
flag=0;
break;
}
}
if(!flag) cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
return 0;
}