結果
| 問題 |
No.331 CodeRunnerでやれ
|
| コンテスト | |
| ユーザー |
E31415926
|
| 提出日時 | 2016-05-28 18:04:03 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
TLE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 2,247 bytes |
| コンパイル時間 | 584 ms |
| コンパイル使用メモリ | 57,088 KB |
| 実行使用メモリ | 98,868 KB |
| 平均クエリ数 | 9.18 |
| 最終ジャッジ日時 | 2024-07-16 23:51:38 |
| 合計ジャッジ時間 | 8,922 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 3 TLE * 1 -- * 12 |
ソースコード
#include<iostream>
using namespace std;
#define UNKNOWN 0
#define ISEMPTY 1
#define ISWALL 2
#define UNPASSED 3
#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;
}
xtmp = x + dx; ytmp = y + dy;
for (i = 0; i < n; ++i) {
if (map[xtmp][ytmp] == UNKNOWN) {
map[xtmp][ytmp] = UNPASSED;
}
xtmp += dx; ytmp += dy;
}
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 + 3) % 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] == UNPASSED) {
cout << "F" << endl << flush;
x += dx; y += dy;
map[x][y] = ISEMPTY;
continue;
}
//壁?
if (map[x + dx][y + dy] == ISWALL) {
dirtmp = (direction + 3) % 4;
xtmp = dirtbl[dirtmp][0]; ytmp = dirtbl[dirtmp][1];
if (map[x + xtmp][y + ytmp] == UNPASSED) {
cout << "L" << endl << flush;
direction = dirtmp;
dx = xtmp; dy = ytmp;
continue;
}
else {
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