AOJ 0033 Ball
友人が解いていたので再び解いてみた.
方針
全探索しました.O(2^10)かな.
#include <iostream> #include <vector> #include <algorithm> #include <cstdio> using namespace std; int ball[10]; bool dfs(int i, int prevLeft, int prevRight) { if(i == 10) return true; if(prevLeft < ball[i]) return dfs(i + 1, ball[i], prevRight); if(prevRight < ball[i]) return dfs(i + 1, prevLeft, ball[i]); return false; } int main() { int n; cin >> n; while(n--) { for(int i = 0; i < 10; i++) cin >> ball[i]; cout << (dfs(0, 0, 0) ? "YES" : "NO") << endl; } }