주어진 조건에 대한 구현 문제
조건을 잘 구현하면 된다...
#include <iostream>
#include <vector>
bool determineDecrease(const std::vector<int>& v, const int N){
bool answer = true;
const int criteria = (N+1)/2;
int current = v[0]<criteria?v[0]:N+1-v[0];
for (int i=1; i<N; ++i){
if ((current <= v[i]) && (current <= N+1-v[i])){
if (v[i] < criteria){
current = v[i];
}
else{
current = N+1-v[i];
}
}
else if (current <= v[i]){
current = v[i];
}
else if (current <= N+1-v[i]){
current = N+1-v[i];
}
else{
return false;
}
}
return answer;
}
int main(){
int T = 0;
std::cin >> T;
for (int i=0; i<T; ++i){
int N = 0;
std::cin >> N;
std::vector<int> v(N, 0);
for (int i=0; i<N; ++i){
std::cin >> v[i];
}
if (determineDecrease(v, N)){
std::cout << "YES" << std::endl;
}
else{
std::cout << "NO" << std::endl;
}
}
return 0;
}