0033 - Ball
#include <iostream> using namespace std; bool flg; void dfs(int A[], int B, int C, int count) { if (count == 10) flg=true; else { if (B==0 && C==0) { dfs(A,A[count],C,count+1); dfs(A,B,A[count],count+1); } else { if (A[count] > B) dfs(A,A[count],C,count+1); if (A[count] > C) dfs(A,B,A[count],count+1); } } } void Slove(int N) { int A[10]; for (int i=0; i<N; ++i) { for (int j=0; j<10; ++j) cin >> A[j]; flg=false; dfs(A,0,0,0); cout << (flg? "YES" : "NO") << endl; } } int main(void) { int N; while (cin >> N) Slove(N); return 0; }
再帰で全探索した。