結果

問題 No.331 CodeRunnerでやれ
ユーザー piyoko_212piyoko_212
提出日時 2015-12-24 01:03:40
言語 C++11
(gcc 11.4.0)
結果
AC  
実行時間 385 ms / 5,000 ms
コード長 1,463 bytes
コンパイル時間 495 ms
コンパイル使用メモリ 44,868 KB
実行使用メモリ 25,232 KB
平均クエリ数 506.47
最終ジャッジ日時 2024-07-16 22:30:23
合計ジャッジ時間 6,087 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 142 ms
24,836 KB
testcase_01 AC 131 ms
24,976 KB
testcase_02 AC 172 ms
24,592 KB
testcase_03 AC 180 ms
24,592 KB
testcase_04 AC 168 ms
24,580 KB
testcase_05 AC 169 ms
24,836 KB
testcase_06 AC 204 ms
25,232 KB
testcase_07 AC 215 ms
25,220 KB
testcase_08 AC 208 ms
25,232 KB
testcase_09 AC 307 ms
24,836 KB
testcase_10 AC 255 ms
25,220 KB
testcase_11 AC 294 ms
24,592 KB
testcase_12 AC 273 ms
24,964 KB
testcase_13 AC 296 ms
24,964 KB
testcase_14 AC 312 ms
24,592 KB
testcase_15 AC 324 ms
24,836 KB
testcase_16 AC 385 ms
24,964 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<stdio.h>
#include<algorithm>
#include<stack>
using namespace std;
char in[2100];
int m[50][50];
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
int v[50][50];
int main(){
	int a;
	int row=25;
	int col=25;
	int dir=0;
	for(int i=0;i<50;i++)for(int j=0;j<50;j++)m[i][j]=-1;
	m[row][col]=0;
	stack<pair<int,int> > S;
	int cnt=0;
	while(1){
		v[row][col]=1;
		for(int t=0;t<4;t++){
			scanf("%s",in);
			if(in[0]=='M')return 0;
			sscanf(in,"%d",&a);
			if(a>20000000){
				while(1){
					printf("F\n");fflush(stdout);
					scanf("%s",in);
					if(in[0]=='M')return 0;
				}
			}
			for(int i=1;i<=a;i++)m[row+dx[dir]*i][col+dy[dir]*i]=0;
			m[row+dx[dir]*(a+1)][col+dy[dir]*(a+1)]=1;
			printf("R\n");fflush(stdout);
			dir=(dir+1)%4;
		}
		scanf("%s",in);
		bool go=false;
		for(int t=0;t<4;t++){
			if(m[row+dx[(dir+t)%4]][col+dy[(dir+t)%4]]==0&&!v[row+dx[(dir+t)%4]][col+dy[(dir+t)%4]]){
				go=true;
				for(int i=0;i<t;i++){
					printf("R\n");fflush(stdout);
					scanf("%s",in);
				}
				S.push(make_pair(row,col));
				dir=(dir+t)%4;
				row+=dx[dir];col+=dy[dir];
				break;
			}
		}
		if(go){
			printf("F\n");fflush(stdout);
			continue;
		}
		for(int t=0;t<4;t++){
			if(row+dx[(dir+t)%4]==S.top().first&&col+dy[(dir+t)%4]==S.top().second){
				S.pop();
				for(int i=0;i<t;i++){
					printf("R\n");fflush(stdout);
					scanf("%s",in);
				}
				dir=(dir+t)%4;
				row+=dx[dir];col+=dy[dir];
				printf("F\n");fflush(stdout);
				break;
			}
		}
	}
}
0