AOJ 2000 Misterious Gems
こんにちは川です。
今回は、場所をbool型で持ちます。宝石の場所はtrueとします。
もし通ったときにtrueだったら宝石の数を減算し、
最終的に宝石の数が0なったら"Yes"を出力します。
#include <bits/stdc++.h>
using
namespace
std;
int
main() {
int
n;
while
(cin>>n,n){
bool
dia[41][41]={};
for
(
int
i=0,x,y;i<n;i++){
cin>>x>>y;
dia[y][x]=1;
}
int
mo;
cin>>mo;
string di=
"NESW"
;
int
dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
for
(
int
i=0,num,x=10,y=10;i<mo;i++){
char
direction;
cin>>direction>>num;
for
(
int
j=0;j<4;j++){
if
(direction==di[j]){
for
(
int
k=0;k<num;k++){
x+=dx[j];
y+=dy[j];
if
(dia[y][x]==1){
dia[y][x]=0;
n--;
}
}
}
}
}
if
(n==0)cout<<
"Yes\n"
;
else
cout<<
"No\n"
;
}
}