Submission #157045


Source Code Expand

import java.util.Scanner;

public class Main{
	public static void main(String[] args){
		new Main().run();
	}


	int N = 19;
	int[][] board;
	void run()
	{
		Scanner cin = new Scanner(System.in);
		board = new int[N][N];

		//入力。String型は扱いにくいのでint型の2次元配列へ
		//ついでにoとxの数を数える
		int ocount = 0;
		int xcount = 0;
		for(int i=0;i<N;i++){
			String st = cin.next();
			for(int j=0;j<N;j++){
				if(st.charAt(j) == 'o'){
					board[i][j] = 1;
					ocount++;
				}
				if(st.charAt(j) == 'x'){
					board[i][j] = 2;
					xcount++;
				}
			}
		}

		//どちらが最後の手であったかを調べる
		int prev = 0;
		if(ocount - 1 == xcount) prev = 1;
		if(ocount == xcount) prev = 2;

		//矛盾がある場合はNOを出力
		if(prev == 0){
			System.out.println("NO");
			return;
		}

		//!!コーナーケース!まだ何も置かれていないときはYES
		if(ocount==0){
			System.out.println("YES");
			return;
		}

		//最終手候補となる石を列挙し、それぞれの直前の局面を調べる
		for(int i=0;i<N;i++){
			for(int j=0;j<N;j++){
				if(board[i][j] == prev){
					board[i][j] = 0;
					if(checkboard()){
						System.out.println("YES");
						return;
					}
					board[i][j] = prev;
				}
			}
		}
		//条件に合う盤面が見つからなかったらNOを出力
		System.out.println("NO");
	}

	boolean checkboard(){
		//8方向に移動する時の変数
		int[] vy = new int[]{1,1,1,0,0,-1,-1,-1};
		int[] vx = new int[]{1,0,-1,1,-1,1,0,-1};
		//全ての盤面から、石の置いてある場所を探す
		for(int i=0;i<N;i++){
			for(int j=0;j<N;j++){
				//石を見つけたら、その石を起点とした5連結の石を調べる
				if(board[i][j] != 0){
					int now = board[i][j];
					//8方向に対して調べる
					for(int k=0;k<8;k++){
						boolean flag = true;
						for(int l=0;l<5;l++){
							int y = i + vy[k] * l;
							int x = j + vx[k] * l;
							if(!ok(y,x) || board[y][x] != now){
								flag = false;
								break;
							}
						}
						//もし5連続の石を見つけたら離脱
						if(flag) return false;
					}

				}
			}
		}
		return true;
	}

	boolean ok(int y, int x){
		return y>=0 && x>=0 && y<N && x<N;
	}
}

Submission Info

Submission Time
Task C - 五目並べチェッカー
User chokudai
Language Java (OpenJDK 1.7.0)
Score 100
Code Size 2359 Byte
Status AC
Exec Time 498 ms
Memory 23664 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 77
Set Name Test Cases
All 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 00_sample_05.txt, 00_sample_06.txt, 00_sample_07.txt, 01_allblack.txt, 01_allwhite.txt, 01_chokudaivssanagipp_01_01.txt, 01_chokudaivssanagipp_01_02.txt, 01_chokudaivssanagipp_01_03.txt, 01_chokudaivssanagipp_01_04.txt, 01_chokudaivssanagipp_01_05.txt, 01_chokudaivssanagipp_01_06.txt, 01_chokudaivssanagipp_01_07.txt, 01_chokudaivssanagipp_02_01.txt, 01_chokudaivssanagipp_02_02.txt, 01_chokudaivssanagipp_02_03.txt, 01_corner_01.txt, 01_corner_02.txt, 01_corner_03.txt, 01_corner_04.txt, 01_double_o_01.txt, 01_double_o_02.txt, 01_double_x_01.txt, 01_double_x_02.txt, 01_full_01.txt, 01_full_02.txt, 01_plus_01.txt, 01_plus_02.txt, 01_plus_03.txt, 01_straight_10.txt, 01_straight_9.txt, 01_x_01.txt, 01_x_02.txt, 01_x_03.txt, 02_rand1_00.txt, 02_rand1_01.txt, 02_rand1_02.txt, 02_rand1_03.txt, 02_rand1_04.txt, 02_rand1_05.txt, 02_rand1_06.txt, 02_rand1_07.txt, 02_rand1_08.txt, 02_rand1_09.txt, 02_rand1_10.txt, 02_rand1_11.txt, 02_rand1_12.txt, 02_rand1_13.txt, 02_rand1_14.txt, 02_rand1_15.txt, 02_rand1_16.txt, 02_rand1_17.txt, 02_rand1_18.txt, 02_rand1_19.txt, 03_rand2_00.txt, 03_rand2_01.txt, 03_rand2_02.txt, 03_rand2_03.txt, 03_rand2_04.txt, 03_rand2_05.txt, 03_rand2_06.txt, 03_rand2_07.txt, 03_rand2_08.txt, 03_rand2_09.txt, 03_rand2_10.txt, 03_rand2_11.txt, 03_rand2_12.txt, 03_rand2_13.txt, 03_rand2_14.txt, 03_rand2_15.txt, 03_rand2_16.txt, 03_rand2_17.txt, 03_rand2_18.txt, 03_rand2_19.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 458 ms 23096 KB
00_sample_02.txt AC 452 ms 23188 KB
00_sample_03.txt AC 452 ms 23136 KB
00_sample_04.txt AC 451 ms 23088 KB
00_sample_05.txt AC 455 ms 23088 KB
00_sample_06.txt AC 448 ms 23128 KB
00_sample_07.txt AC 449 ms 23092 KB
01_allblack.txt AC 455 ms 23088 KB
01_allwhite.txt AC 456 ms 23096 KB
01_chokudaivssanagipp_01_01.txt AC 449 ms 23088 KB
01_chokudaivssanagipp_01_02.txt AC 443 ms 23096 KB
01_chokudaivssanagipp_01_03.txt AC 446 ms 23088 KB
01_chokudaivssanagipp_01_04.txt AC 446 ms 23080 KB
01_chokudaivssanagipp_01_05.txt AC 447 ms 23092 KB
01_chokudaivssanagipp_01_06.txt AC 457 ms 23088 KB
01_chokudaivssanagipp_01_07.txt AC 435 ms 23088 KB
01_chokudaivssanagipp_02_01.txt AC 444 ms 23084 KB
01_chokudaivssanagipp_02_02.txt AC 446 ms 23088 KB
01_chokudaivssanagipp_02_03.txt AC 439 ms 23092 KB
01_corner_01.txt AC 441 ms 23216 KB
01_corner_02.txt AC 449 ms 23468 KB
01_corner_03.txt AC 470 ms 23664 KB
01_corner_04.txt AC 462 ms 23604 KB
01_double_o_01.txt AC 442 ms 23088 KB
01_double_o_02.txt AC 448 ms 23216 KB
01_double_x_01.txt AC 443 ms 23092 KB
01_double_x_02.txt AC 445 ms 23084 KB
01_full_01.txt AC 440 ms 23096 KB
01_full_02.txt AC 445 ms 23220 KB
01_plus_01.txt AC 442 ms 23096 KB
01_plus_02.txt AC 444 ms 23092 KB
01_plus_03.txt AC 444 ms 23092 KB
01_straight_10.txt AC 443 ms 23216 KB
01_straight_9.txt AC 445 ms 23092 KB
01_x_01.txt AC 445 ms 23092 KB
01_x_02.txt AC 446 ms 23096 KB
01_x_03.txt AC 443 ms 23092 KB
02_rand1_00.txt AC 463 ms 23600 KB
02_rand1_01.txt AC 464 ms 23444 KB
02_rand1_02.txt AC 442 ms 23100 KB
02_rand1_03.txt AC 463 ms 23604 KB
02_rand1_04.txt AC 441 ms 23092 KB
02_rand1_05.txt AC 441 ms 23096 KB
02_rand1_06.txt AC 453 ms 23592 KB
02_rand1_07.txt AC 438 ms 23088 KB
02_rand1_08.txt AC 443 ms 23220 KB
02_rand1_09.txt AC 468 ms 23476 KB
02_rand1_10.txt AC 457 ms 23468 KB
02_rand1_11.txt AC 464 ms 23592 KB
02_rand1_12.txt AC 451 ms 23472 KB
02_rand1_13.txt AC 498 ms 23092 KB
02_rand1_14.txt AC 446 ms 23196 KB
02_rand1_15.txt AC 468 ms 23476 KB
02_rand1_16.txt AC 449 ms 23088 KB
02_rand1_17.txt AC 447 ms 23472 KB
02_rand1_18.txt AC 440 ms 23096 KB
02_rand1_19.txt AC 443 ms 23100 KB
03_rand2_00.txt AC 452 ms 23232 KB
03_rand2_01.txt AC 457 ms 23280 KB
03_rand2_02.txt AC 441 ms 23216 KB
03_rand2_03.txt AC 444 ms 23088 KB
03_rand2_04.txt AC 442 ms 23212 KB
03_rand2_05.txt AC 444 ms 23084 KB
03_rand2_06.txt AC 440 ms 23088 KB
03_rand2_07.txt AC 446 ms 23084 KB
03_rand2_08.txt AC 452 ms 23220 KB
03_rand2_09.txt AC 451 ms 22968 KB
03_rand2_10.txt AC 449 ms 23092 KB
03_rand2_11.txt AC 455 ms 23092 KB
03_rand2_12.txt AC 461 ms 23092 KB
03_rand2_13.txt AC 447 ms 23088 KB
03_rand2_14.txt AC 445 ms 23088 KB
03_rand2_15.txt AC 444 ms 23188 KB
03_rand2_16.txt AC 483 ms 23120 KB
03_rand2_17.txt AC 458 ms 23084 KB
03_rand2_18.txt AC 443 ms 22976 KB
03_rand2_19.txt AC 450 ms 23092 KB