トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

2006ra2.c

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// 整数型2次元配列を使った方法
// 下方向を北と考えている(コンピュータとy軸は下方向がプラスだから)
main()
{
	int n,m,i,j,x,y,ryo,takara;
	int map[21][21];
	char muki;
	
	while(1){
		// 文字と数字が混在した入力はうまく行かないことが多いが、
		// scanfを使ってみた
		scanf("%d", &n);
		if(n==0) break;
		
		// 地図クリア(何も無い=0)
		for(j=0; j<=20; j++){
			for(i=0; i<=20; i++){
				map[i][j]=0;
			}
		}
		
		// 宝石を置く(=1)
		for(i=0; i<n; i++){
			scanf("%d %d", &x, &y);
			map[x][y]=1;
		}
		
		scanf("%d", &m);;
		
		takara=0; // 見つけた宝石を数えてみた
		x=10; y=10;
		for(i=0; i<m; i++){
			scanf("%c", &muki); // 改行読み飛ばし
			scanf("%c %d", &muki, &ryo);
			for(j=0; j<ryo; j++){
				switch(muki){
					case 'N': y++; break;
					case 'E': x++; break;
					case 'W': x--; break;
					case 'S': y--; break;
				}
				if(map[x][y]){
					takara++;
					map[x][y]=0;
				}
			}
		}
		if(takara==n){
			puts("Yes");
		}else{
			puts("No");
		}
	}
	
	return(0);
}