#include<stdio.h>
#include<string.h>
char a[15][15];
int b[15][15];
struct Command {
int a, b;
char c;
} cmd[10];
void aa(int x, int y, int flag) {
int flag2 = flag;
for(int i = x, j = y - 1; j != 0; j--)
if(a[i][j] != 0 && a[i][j] != 'E') {
if(flag) {
b[i][j] = 1;
break;
}
else flag = 1;
}
else if(flag) b[i][j] = 1;
flag = flag2;
for(int i = x, j = y + 1; j != 10; j++)
if(a[i][j] != 0 && a[i][j] != 'E') {
if(flag) {
b[i][j] = 1;
break;
}
else flag = 1;
}
else if(flag) b[i][j] = 1;
flag = flag2;
for(int i = x + 1, j = y; i != 11; i++)
if(a[i][j] != 0 && a[i][j] != 'E') {
if(flag) {
b[i][j] = 1;
break;
}
else flag = 1;
}
else if(flag) b[i][j] = 1;
flag = flag2;
for(int i = x - 1, j = y; i != 0; i--)
if(a[i][j] != 0 && a[i][j] != 'E') {
if(flag) {
b[i][j] = 1;
break;
}
else flag = 1;
}
else if(flag) b[i][j] = 1;
}
void bb(int x, int y) {
if(x >= 3 && a[x - 1][y] == 0) {
if(y != 1) b[x - 2][y - 1] = 1;
if(y != 9) b[x - 2][y + 1] = 1;
}
if(x <= 8 && a[x + 1][y] == 0) {
if(y != 1) b[x + 2][y - 1] = 1;
if(y != 9) b[x + 2][y + 1] = 1;
}
if(y >= 3 && a[x][y - 1] == 0) {
if(x != 1) b[x - 1][y - 2] = 1;
if(x != 10) b[x + 1][y - 2] = 1;
}
if(y <= 7 && a[x][y + 1] == 0) {
if(x != 1) b[x - 1][y + 2] = 1;
if(x != 10) b[x + 1][y + 2] = 1;
}
}
void cc(char c, int x, int y) {
if(c == 'R' || c == 'G') aa(x, y, 1);
else if(c == 'C') aa(x, y, 0);
else if(c == 'H') bb(x, y);
}
int dd(int x, int y) {
if(x == 1 || x == 2)
if(b[x + 1][y] == 0)
return 0;
if(x == 2 || x == 3)
if(b[x - 1][y] == 0)
return 0;
if(y == 4 || y == 5)
if(b[x][y + 1] == 0)
return 0;
if(y == 6 || y == 5)
if(b[x][y - 1] == 0)
return 0;
return 1;
}
int main() {
int n, x, y;
char ch;
while(scanf("%d%d%d", &n, &x, &y) == 3 && n)
{
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
a[x][y] = 'E';
int nn = n, xx = x, yy = y;
while(n--) {
scanf("%c%d%d", &ch, &x, &y);
cmd[n].a = x;
cmd[n].b = y;
cmd[n].c = ch;
a[x][y] = ch;
}
while(nn--) cc(cmd[nn].c, cmd[nn].a, cmd[nn].b);
int flag = dd(xx, yy);
if(flag) printf("YES\n");
else printf("NO\n");
}
return 0;
}
对于样例:
2 1 4
G 10 5
R 6 4
3 1 5
H 4 5
G 10 5
C 7 5
2 1 5
R 4 4
G 10 5
3 1 5
G 10 4
R 5 5
H 3 7
4 1 5
G 10 4
C 6 5
H 5 5
R 1 1
5 1 5
G 10 4
C 6 5
H 5 5
H 4 5
R 1 1
3 1 5
G 10 4
C 2 7
H 3 7
3 1 5
G 10 4
R 5 5
R 1 6
4 1 5
G 10 4
R 5 5
R 1 6
H 3 7
0 0 0
标准答案:
YES
NO
NO
YES
YES
NO
NO
NO
YES
我的答案:
NO