結果
| 問題 | No.331 CodeRunnerでやれ |
| コンテスト | |
| ユーザー |
E31415926
|
| 提出日時 | 2016-05-28 16:09:28 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
TLE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 1,647 bytes |
| コンパイル時間 | 541 ms |
| コンパイル使用メモリ | 56,572 KB |
| 実行使用メモリ | 94,668 KB |
| 平均クエリ数 | 0.06 |
| 最終ジャッジ日時 | 2024-07-16 23:50:21 |
| 合計ジャッジ時間 | 7,964 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | TLE * 1 |
| other | AC * 1 -- * 15 |
ソースコード
#include<iostream>
using namespace std;
#define UNKNOWN 0
#define ISEMPTY 1
#define ISWALL 2
#define UP 0
#define RIGHT 1
#define DOWN 2
#define LEFT 3
int dirtbl[4][2] = { {0,-1},{1,0},{0,1},{-1,0} };
int main()
{
//初期位置を(19,19)上向きとする
int map[39][39]{ {0} }, x = 19, y = 19,
dx = 0, dy = -1, n, i, xtmp, ytmp, direction = UP,
dirtmp;
map[19][19] = ISEMPTY;
while (1) {
cin >> n;
if (cin.fail()) { return 0; }
if (n == 20151224) {
cout << "F" << endl << flush;
x += dx; y += dy;
continue;
}
map[x + (n + 1) * dx][y + (n + 1) * dy] = ISWALL;
//右?
dirtmp = (direction + 1) % 4;
xtmp = dirtbl[dirtmp][0]; ytmp = dirtbl[dirtmp][1];
if(map[x + xtmp][y+ytmp]==UNKNOWN){
cout << "R" << endl << flush;
direction = dirtmp;
dx = xtmp; dy = ytmp;
continue;
}
//左?
dirtmp = (direction - 1) % 4;
xtmp = dirtbl[dirtmp][0]; ytmp = dirtbl[dirtmp][1];
if (map[x+xtmp][y+ytmp] == UNKNOWN) {
cout << "L" << endl << flush;
direction = dirtmp;
dx = xtmp; dy = ytmp;
continue;
}
//逆?
dirtmp = (direction + 2) % 4;
xtmp = dirtbl[dirtmp][0]; ytmp = dirtbl[dirtmp][1];
if (map[x+xtmp][y+ytmp] == UNKNOWN) {
cout << "R" << endl << flush;
direction = (direction + 1) % 4;
dx = dirtbl[direction][0]; dy = dirtbl[direction][1];
continue;
}
//壁?
if (map[x + dx][y + dy] == ISWALL) {
cout << "R" << endl << flush;
direction = (direction + 1) % 4;
dx = dirtbl[direction][0]; dy = dirtbl[direction][1];
continue;
}
//それ以外
cout << "F" << endl << flush;
x += dx; y += dy;
map[x][y] = ISEMPTY;
}
return 0;
}
E31415926