結果

問題 No.331 CodeRunnerでやれ
ユーザー piyoko_212piyoko_212
提出日時 2015-12-24 01:03:40
言語 C++11
(gcc 11.4.0)
結果
AC  
実行時間 388 ms / 5,000 ms
コード長 1,463 bytes
コンパイル時間 339 ms
コンパイル使用メモリ 47,640 KB
実行使用メモリ 24,400 KB
平均クエリ数 506.47
最終ジャッジ日時 2023-09-23 22:46:32
合計ジャッジ時間 6,661 ms
ジャッジサーバーID
(参考情報)
judge11 / judge13
このコードへのチャレンジ(β)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 142 ms
23,496 KB
testcase_01 AC 144 ms
24,168 KB
testcase_02 AC 173 ms
24,304 KB
testcase_03 AC 175 ms
24,400 KB
testcase_04 AC 171 ms
23,808 KB
testcase_05 AC 173 ms
23,400 KB
testcase_06 AC 187 ms
23,844 KB
testcase_07 AC 206 ms
24,168 KB
testcase_08 AC 212 ms
23,512 KB
testcase_09 AC 294 ms
24,268 KB
testcase_10 AC 260 ms
23,596 KB
testcase_11 AC 301 ms
23,856 KB
testcase_12 AC 272 ms
23,644 KB
testcase_13 AC 298 ms
23,400 KB
testcase_14 AC 308 ms
23,364 KB
testcase_15 AC 323 ms
23,356 KB
testcase_16 AC 388 ms
24,060 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