Problem:
玉

図のように二股に分かれている容器があります。1 から 10 までの番号が付けられた10 個の玉を容器の開口部 A から落とし、左の筒 B か右の筒 C に玉を入れます。板 D は支点 E を中心に左右に回転できるので、板 D を動かすことで筒 B と筒 C のどちらに入れるか決めることができます。

開口部 A から落とす玉の並びを与えます。それらを順番に筒 B 又は筒 Cに入れていきます。このとき、筒 B と筒 C のおのおのが両方とも番号の小さい玉の上に大きい玉を並べられる場合は YES、並べられない場合は NO と出力するプログラムを作成してください。ただし、容器の中で玉の順序を入れ替えることはできないものとします。また、続けて同じ筒に入れることができるものとし、筒 B, C ともに 10 個の玉がすべて入るだけの余裕があるものとします。

Input

複数のデータセットが与えられます。１行目にデータセット数 N が与えられます。つづいて、N 行のデータセットが与えられます。各データセットに 10 個の番号が左から順番に空白区切りで与えられます。

Output

各データセットに対して、YES または NO を１行に出力して下さい。

Sample Input

2
3 1 4 2 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1

Output for the Sample Input

YES
NO

Solution in JAVA (judge verdict: Accepted)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {
	private	static	BufferedReader	br = null;

	static {
		br  = new BufferedReader(new InputStreamReader(System.in));
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int		cnt  = parseCnt();
		int[]	ball = null;

		for (int n = 0; n < cnt; n++) {
			if ((ball = parseBall()) != null) {
				if (push(ball) == 0) {
					System.out.println("YES");
				}
				else {
					System.out.println("NO");
				}
			}
		}
	}

	private static int push(int[] ball) {
		int	nStatus = 0;
		int	a       = 0;
		int	b       = 0;

		for (int n = 0; n < ball.length && nStatus == 0; n++) {
			if (a < ball[n]) {
				a = ball[n];
			}
			else if (b < ball[n]) {
				b = ball[n];
			}
			else {
				nStatus = -1;
			}
		}
		
		return nStatus;
	}

	private static int parseCnt() {
		int		cnt   = 0;
		String	strIn = null;

		if ((strIn = parseStdin()) != null) {
			cnt = Integer.parseInt(strIn);
		}
		
		return cnt;
	}

	private static int[] parseBall() {
		int[]	ball  = null;
		String	strIn = null;

		if ((strIn = parseStdin()) != null) {
			String[]	aN = strIn.split(" ");
			ball = new int[10];
			for (int n = 0; n < 10; n++) {
				ball[n] = Integer.parseInt(aN[n]);
			}
		}
		
		return ball;
	}

	private static String parseStdin() {
		String	strNum = null;

		try {
			String line = br.readLine();
			if (line != null) {
				if (!line.isEmpty()) {
					strNum = line;
				}
			}
		}
		catch (IOException e) {}

		return strNum;
	}
}