結果

問題 No.240 ナイト散歩
ユーザー airis
提出日時 2015-07-10 23:46:40
言語 C++11
(gcc 4.8.5)
結果
AC  
実行時間 3 ms
コード長 1,188 Byte
コンパイル時間 498 ms
使用メモリ 1,500 KB
最終ジャッジ日時 2018-09-26 02:34:44

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
99_challenge01.txt AC 2 ms
1,492 KB
99_challenge02.txt AC 3 ms
1,496 KB
challenge01.txt AC 2 ms
1,492 KB
challenge02.txt AC 3 ms
1,492 KB
sample1.txt AC 3 ms
1,496 KB
sample2.txt AC 3 ms
1,500 KB
sample3.txt AC 2 ms
1,496 KB
sample4.txt AC 2 ms
1,496 KB
system_test1.txt AC 3 ms
1,496 KB
system_test2.txt AC 2 ms
1,500 KB
system_test3.txt AC 2 ms
1,496 KB
system_test4.txt AC 3 ms
1,496 KB
system_test5.txt AC 2 ms
1,500 KB
system_test6.txt AC 3 ms
1,488 KB
system_test7.txt AC 3 ms
1,500 KB
system_test8.txt AC 2 ms
1,496 KB
system_test9.txt AC 2 ms
1,500 KB
system_test10.txt AC 3 ms
1,500 KB
test1.txt AC 2 ms
1,500 KB
test2.txt AC 2 ms
1,500 KB
test3.txt AC 3 ms
1,496 KB
test4.txt AC 3 ms
1,492 KB
test5.txt AC 3 ms
1,500 KB
test6.txt AC 2 ms
1,492 KB
test7.txt AC 3 ms
1,492 KB
test8.txt AC 2 ms
1,500 KB
test9.txt AC 3 ms
1,500 KB
test10.txt AC 2 ms
1,500 KB
test11.txt AC 2 ms
1,492 KB
test12.txt AC 3 ms
1,500 KB
test13.txt AC 2 ms
1,500 KB
test14.txt AC 2 ms
1,500 KB
test15.txt AC 3 ms
1,496 KB
test16.txt AC 3 ms
1,500 KB
テストケース一括ダウンロード

ソースコード

diff #
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <numeric>
#include <bitset>
#include <complex>
#define rep(x, to) for (int x = 0; x < (to); x++)
#define REP(x, a, to) for (int x = (a); x < (to); x++)
#define foreach(itr, x) for (typeof((x).begin()) itr = (x).begin(); itr != (x).end(); itr++)
#define EPS (1e-14)

using namespace std;

typedef long long ll;
typedef pair<int, int> PII;
typedef pair<ll, ll> PLL;
typedef complex<double> Complex;
typedef vector< vector<int> > Mat;

const int LIMIT = 1e+9;

int X, Y;

int dy[] = {-1,1,2,-2,-2,2,-1,1};
int dx[] = {-2,-2,-1,-1,1,1,2,2};

bool dfs(int y, int x, int d) {
	if (d >= 0) {
		if (y == Y && x == X) return true;
		rep(k, 8) {
			int ny = y + dy[k];
			int nx = x + dx[k];
			if (ny > LIMIT || -LIMIT > ny) continue;
			if (nx > LIMIT || -LIMIT > nx) continue;
			bool res = dfs(ny, nx, d-1);
			if (res) return res;
		}
	}
	return false;
}

int main() {
	cin >> X >> Y;
	if (dfs(0, 0, 3)) cout << "YES" << endl;
	else cout << "NO" << endl;
	return 0;
}


0