メモ

自分に向けて書いたメモを取り扱っています.

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;
    }
}