提出 #396274


ソースコード 拡げる

#include <iostream>
#include <stdio.h>
#include <set>
#include <map>
#include <list>
#include <vector>
#include <algorithm>
#include <cmath>
#include <limits.h>
#include <string>
#include <queue>
#include <functional>
#include <stack>
#include <complex>
#include <stdlib.h>
#include <string.h>
using namespace std;

namespace{
	#define		CAST( T, val )		( (T)( val ) )
	#define		CASE( lb )			break; case lb:
	#define		CASE_CONTINUE( lb )	case lb:
	#define		CASE_DEFAULT		break; default:
	#define		For( i, s )			for(int i= 0; i< (int)s; i++)
	#define		ForA( i, a, s )		for(int i= (int)a; i< (int)s; i++)
	#define		ForSize( i, s )		for(int i= 0, size= (int)s; i< size; i++)
	#define		ForSizeA( i, a, s )	for(int i= (int)a, size= (int)s; i< size; i++)
	#define		ForItr( itr, con )	for(auto itr= con.begin(); itr!= con.end(); itr++)
	#define		ForStr( i, str )	for(int i= 0; str[i]; i++)
	#define		GOTO( lb )			goto lb
	#define		LABEL( lb )			lb:
	#define		ALL( con )			con.begin(), con.end()

	typedef		long long		LLint;
	typedef		unsigned int	Uint;
	typedef		unsigned char	Uchar;
	typedef		unsigned short	Ushort;
	
	const int Ten5= 100000;		//	10^5
	const int Ten6= 1000000;	//	10^6
	const double EPS= 0.00000000023283064365386962890625;	//	2^-32
	template <typename T> class priority_queue_less : public priority_queue<T,vector<T>,greater<T> >{};
}

int H, W;
char Map[100][100];
bool Winner[100][100];
bool Chked[100][100];

void chk(int px, int py){
	const int dx[]= { 1, 1, 0 }, dy[]= { 0, 1, 1 };

	bool hasLoser= false;
	For( k, 3 ){
		if( px +dx[k]== W ) continue;
		if( py +dy[k]== H ) continue;
		if( Map[ py +dy[k] ][ px +dx[k] ]== '#' ) continue;

		if( !Winner[ py +dy[k] ][ px +dx[k] ] ){
			hasLoser= true;
			break;
		}
	}

	Winner[py][px]= hasLoser;
}
void dfs(int px, int py){
	if( Chked[py][px] ) return ;
	Chked[py][px]= true;
	
	const int dx[]= { 1, 1, 0 }, dy[]= { 0, 1, 1 };
	For( k, 3 ){
		if( px +dx[k]== W ) continue;
		if( py +dy[k]== H ) continue;
		dfs( px +dx[k], py +dy[k] );
	}

	chk( px, py );
}
int main(){
	cin>> H>> W;
	For( h, H ) For( w, W ){
		cin>> Map[h][w];
	}

	dfs( 0, 0 );

	cout<< ( Winner[0][0] ? "First" : "Second" )<< endl;

	return 0;
}

提出情報

提出日時
問題 B - マス目と駒
ユーザ BGSC
言語 C++11 (GCC 4.9.2)
得点 100
コード長 2273 Byte
結果 AC
実行時間 27 ms
メモリ 932 KiB

ジャッジ結果

セット名 Sample Dataset1 Dataset2
得点 / 配点 0 / 0 30 / 30 70 / 70
結果
AC × 3
AC × 18
AC × 30
セット名 テストケース
Sample sample-01.txt, sample-02.txt, sample-03.txt
Dataset1 sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt
Dataset2 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt
ケース名 結果 実行時間 メモリ
01-01.txt AC 26 ms 752 KiB
01-02.txt AC 23 ms 924 KiB
01-03.txt AC 23 ms 808 KiB
01-04.txt AC 22 ms 920 KiB
01-05.txt AC 22 ms 928 KiB
01-06.txt AC 24 ms 924 KiB
01-07.txt AC 24 ms 932 KiB
01-08.txt AC 24 ms 924 KiB
01-09.txt AC 24 ms 800 KiB
01-10.txt AC 24 ms 928 KiB
01-11.txt AC 24 ms 928 KiB
01-12.txt AC 23 ms 840 KiB
01-13.txt AC 22 ms 928 KiB
01-14.txt AC 23 ms 928 KiB
01-15.txt AC 22 ms 804 KiB
02-01.txt AC 27 ms 788 KiB
02-02.txt AC 25 ms 732 KiB
02-03.txt AC 26 ms 732 KiB
02-04.txt AC 25 ms 916 KiB
02-05.txt AC 26 ms 728 KiB
02-06.txt AC 27 ms 796 KiB
02-07.txt AC 25 ms 920 KiB
02-08.txt AC 25 ms 920 KiB
02-09.txt AC 25 ms 916 KiB
02-10.txt AC 25 ms 916 KiB
02-11.txt AC 25 ms 916 KiB
02-12.txt AC 26 ms 920 KiB
02-13.txt AC 26 ms 788 KiB
02-14.txt AC 27 ms 920 KiB
02-15.txt AC 27 ms 728 KiB
sample-01.txt AC 24 ms 928 KiB
sample-02.txt AC 25 ms 800 KiB
sample-03.txt AC 25 ms 800 KiB