結果
| 問題 | No.331 CodeRunnerでやれ |
| コンテスト | |
| ユーザー |
E31415926
|
| 提出日時 | 2016-05-28 16:12:48 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
TLE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 1,411 bytes |
| 記録 | |
| コンパイル時間 | 673 ms |
| コンパイル使用メモリ | 54,876 KB |
| 実行使用メモリ | 139,196 KB |
| 平均クエリ数 | 8.59 |
| 最終ジャッジ日時 | 2024-07-16 23:50:45 |
| 合計ジャッジ時間 | 8,586 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 2 TLE * 1 -- * 13 |
ソースコード
#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 + 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