結果
| 問題 |
No.240 ナイト散歩
|
| ユーザー |
|
| 提出日時 | 2018-05-26 20:12:40 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 1,291 bytes |
| コンパイル時間 | 786 ms |
| コンパイル使用メモリ | 71,424 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-06-28 18:16:28 |
| 合計ジャッジ時間 | 1,573 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 30 |
ソースコード
#include <iostream>
#include <vector>
using namespace std;
typedef long long LL;
int X,Y;
bool Check(vector<pair<int,int>> &myVec,int x,int y)
{
myVec.push_back(make_pair(x-2,y-1));
myVec.push_back(make_pair(x-2,y+1));
myVec.push_back(make_pair(x-1,y-2));
myVec.push_back(make_pair(x-1,y+2));
myVec.push_back(make_pair(x+1,y-2));
myVec.push_back(make_pair(x+1,y+2));
myVec.push_back(make_pair(x+2,y-1));
myVec.push_back(make_pair(x+2,y+1));
int i;
for (i=0;i<myVec.size();i++){
if (myVec[i].first==X && myVec[i].second==Y){
myVec.clear();
cout<<"YES"<<endl;
return true;
}
}
return false;
}
bool canGoTo(int x,int y)
{
if (x==X && y==Y){
cout<<"YES"<<endl;
return true;
}
vector<pair<int,int>> myVec1;
bool canGo=Check(myVec1,x,y);
if (canGo){
return true;
}
vector<pair<int,int>> myVec2;
int i;
for (i=0;i<myVec1.size();i++){
canGo=Check(myVec2,myVec1[i].first,myVec1[i].second);
if (canGo==true){
return true;
}
}
vector<pair<int,int>> myVec3;
for (i=0;i<myVec2.size();i++){
canGo=Check(myVec3,myVec2[i].first,myVec2[i].second);
if (canGo==true){
return true;
}
}
myVec1.clear();
myVec2.clear();
myVec3.clear();
cout<<"NO"<<endl;
return false;
}
int main(int argc, char* argv[])
{
cin>>X>>Y;
canGoTo(0,0);
return 0;
}