【每日一题】失败了

#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<stdio.h>
#include<algorithm>
#include<set>
#include<bitset>
#include<queue>
using namespace std;

#define rep(i,j,k) for(int i = (int)j;i <= (int)k;i ++)
#define per(i,j,k) for(int i = (int)j;i >= (int)k;i --)
#define debug(x) cerr<<#x<<" = "<<(x)<<endl
#define mmm(a,b) memset(a,b,sizeof(a))
#define pb push_back
#define eps 1e-7

typedef long long ll;
const int maxn = 1e6 + 4;
//const ll mod = 1e9 + 7;
int mmp[11][11];
int n = 0;
int dir[4][2] = { 0,1 ,1,0, 0,-1, -1,0 };
struct node {
    int x, y, t;
    node(int x = 0, int y = 0, int t = 0) :x(x), y(y), t(t) {}
    void sc() { scanf("%d%d", &x, &y); }
};

int vis[11][11];
string op[8];
int r[8], c[8];
int main()
{
    int sr, sc;
    begin:
    while (cin >> n>>sr>>sc&&(n||sr||sc)) {
        
        mmm(mmp, 0);
        mmm(vis, 0);
        rep(i, 1, n) {
            //string op; int r, c;
            cin >> op[i] >> r[i] >> c[i];
            vis[r[i]][c[i]] = 1;
        }
        rep(k, 1, n) {
            if (op[k] == "R") {
                int i = r[k];
                int ok = 1;
                while (i--) {
                    if (vis[i][c[k]] )ok = 0;
                    if (ok)mmp[i][c[k]] = 1;
                }
                 i = r[k];
                 ok = 1;
                while (i++&i<=10) {
                    if (vis[i][c[k]] )ok = 0;
                    if (ok)mmp[i][c[k]] = 1;
                }
                int j = c[k];
                ok = 1;
                while (j--) {
                    if (vis[r[k]][j] && ok == 1)ok = 0;
                    if (ok)mmp[r[k]][j] = 1;
                }
                j = c[k];
                ok = 1;
                while (j++&&j<=10) {
                    if (vis[r[k]][j] && ok == 1)ok = 0;
                    if (ok)mmp[r[k]][j] = 1;
                }
                //rep(i, 1, 10)mmp[i][c[k]] = 1;
                //rep(j, 1, 9)mmp[r[k]][j] = 1;
            }
            if (op[k] == "G") {
                per(i, 9, 1) { if (vis[i][c[k]])break; if (i == sr && sc == c[k]) { puts("NO"); goto begin; } mmp[i][c[k]] = 1; }
                
            }
            if (op[k] == "C") {
                int i = r[k];
                int ok = 0;
                while (i--) {
                    if (vis[i][c[k]]) if( ok == 1)ok = 0;
                    else ok = 1;
                    
                    if (ok)mmp[i][c[k]] = 1;
                }
                 i = r[k];
                 ok = 0;
                while (i++&&i<=10) {
                    if (vis[i][c[k]]) if (ok == 1)ok = 0;
                    else ok = 1;

                    if (ok)mmp[i][c[k]] = 1;
                }
                int j = c[k];
                ok = 0;
                while (j--) {
                    if (vis[r[k]][j])if(ok == 1)ok = 0;
                    else ok = 1;
                    
                    if (ok)mmp[r[k]][j] = 1;
                }
                while (j++) {
                    if (vis[r[k]][j]) if( ok == 1)ok = 0;
                    else ok = 1;
                    
                    if (ok)mmp[r[k]][j] = 1;
                }
            }
            if (op[k] == "H") {
                if (c[k] + 2 <= 10)if (!vis[r[k]][c[k] + 1])mmp[r[k] + 1][c[k] + 2] = mmp[r[k] - 1][c[k] + 2] = 1;
                if (c[k] - 2 <= 10)if (!vis[r[k]][c[k] - 1])mmp[r[k] + 1][c[k] - 2] = mmp[r[k] - 1][c[k] - 2] = 1;
                if (r[k] - 2 <= 9)if (!vis[r[k]-1][c[k]])mmp[r[k] - 2][c[k] - 1] = mmp[r[k] - 2][c[k] +1] = 1;
                if (r[k] + 2 <= 9)if (!vis[r[k] + 1][c[k]])mmp[r[k] + 2][c[k] - 1] = mmp[r[k] + 2][c[k] + 1] = 1;
            }
        }
        int ok=0;
        rep(i, 0, 3) {
            int dr = sr + dir[i][0];
            int dc = sc + dir[i][1];
            if (dr > 3 || dr < 1 || dc>6 || dc < 4)continue;
            if (mmp[dr][dc] == 0)ok = 1;
        }
        rep(i, 1, 10) {rep(j, 1, 9)cout << mmp[i][j] << ' ';cout << endl;}
        if (ok)puts("NO");
        else puts("YES");
    }
    
}
/*

2 2 5
H 2 3
R 2 4




*/

猜你喜欢

转载自www.cnblogs.com/SuuT/p/9461060.html