【題目敘述】https://codeforces.com/contest/1291/problem/B
【解題想法】
- 題目要求嚴格遞增再遞減
- 先判斷前半段的數字,每個數字要大於等於index-i,才有辦法改變數字成一串嚴格遞增的序列。
- (Line-17/18) 判斷長度為1或偶數(兩個中點)的情況。
- 在判斷中點後方的數字,每個數字要大於等於index-i,才有餘裕改變數字成一串嚴格遞減的序列。
#include <iostream>
using namespace std;
int t, n, a, m;
bool flag;
int main() {
cin >> t;
while (t--){
cin >> n;
flag = true;
for (int i = 0; i < (n+1)/2; i++){
cin >> a;
if (a < i) flag = false;
}
m = a;
if (n != 1) cin >> a;
if (m < (n/2) && a < (n/2)) flag = false;
for (int i = n/2-1; i > 0; i--){
if (a < i) flag = false;
cin >> a;
}
if (flag) cout << "Yes\n";
else cout << "No\n";
}
}