题目 : Problem - 2454 (dingbacode.com)
#include<bits/stdc++.h>
using namespace std;
int a[10010];
bool cmp(int x,int y){
return x>y;
}
int main(){
int c,b,n,m,ans;
scanf("%d",&n);
while(n--){
scanf("%d",&c);
b=0;
for(int i=1;i<=c;i++){
scanf("%d",a+i);
b+=a[i];
}
if(b&1){
printf("no\n");
continue;
}
for(int i=1;i<=c;i++){
sort(a+i,a+c+1,cmp);
m=a[i];
if(m<0||m>c-i){
break;
}
a[i]=0;
for(int j=1;j<=m;j++){
a[i+j]--;
}
}
ans=1;
for(int i=1;i<=c&&ans;i++){
if(a[i]){
ans=0;
}
}
printf("%s\n",ans?"yes":"no");
}
return 0;
}