Codeforces Round #328 (Div. 2) 592A PawnChess

为了督促自己打cf 开了一个cf专栏….(主要是太懒…防止不补题的….
前段时间因为boom boom boom 咳咳 没打cf后来才补的…So…(昨晚打的…让我想想题意
题意:有人发明了一种新的chess 名字叫PawnChess 规则是这样的
棋盘8*8 上边有白棋和黑棋
A执白棋 B执黑棋
白棋每次只能往上跳一格 黑棋每次只能往下跳一格
白棋先跳到第一行 A赢 黑棋先调到第8行 B赢
棋子要跳到的格子里必须是没有棋子的
问你谁赢…
思路:
呃…这个…
直接求距离第一行最近的且上边没有黑棋的白棋
然后求距离第八行最近的且下边没有白棋的黑棋
比较谁近就行了… 不存在一样近的案例
SO。。。

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<queue>
#include<stack>
#include<string>
#include<vector>
#include<map>
#include<set>
using namespace std;
#define rfor(i,a,b) for(i=a;i<=b;++i)
#define lfor(i,a,b) for(i=a;i>=b;--i)
#define sfor(i,a,h) for(i=h[a];i!=-1;i=e[i].next)
#define mem(a,b) memset(a,b,sizeof(a))
#define mec(a,b) memcpy(a,b,sizeof(b))
#define cheak(i) printf("%d ",i)
#define min(a,b) (a>b?b:a)
#define max(a,b) (a>b?a:b)
#define inf 0x3f3f3f3f
#define lowbit(x) (x&(-x))
typedef long long LL;
#define maxn 10
#define maxm maxn*maxn
#define lson(x) (splay[x].son[0])
#define rson(x) (splay[x].son[1])
char Map[maxn][maxn];
int mark[maxn];
int main()
{
    int i,j;
    rfor(i,1,8)
    scanf("%s",Map[i]+1);
    int ans1=-1,ans2=-1;
    rfor(i,1,8)
    {
        rfor(j,1,8)
        if(Map[i][j]=='W'&&!mark[j])
        {
            ans1=i;break;
         }
        else if(Map[i][j]=='B') mark[j]=1;
        if(ans1!=-1) break;
    }
    mem(mark,0);
    lfor(i,8,1)
    {
        rfor(j,1,8)
        if(Map[i][j]=='B'&&!mark[j])
        {
            ans2=i;break;
        }
        else if(Map[i][j]=='W') mark[j]=1;
        if(ans2!=-1) break;
    }
    if(ans1-1>8-ans2) printf("B\n");
    else printf("A\n");
    return 0;
} 

你可能感兴趣的:(codeforces)