关灯计划

Time Limit: 500 ms Memory Limit: 65536 KiB

Special Judge
Problem Description

在某次活动上,某组织打算控制一栋宿舍楼的灯光来进行一次灯光表演。
他们的实现方式是使所有宿舍全部打开房间内电灯开关,然后通过自己控制电闸来使部分房间通电亮灯,从而摆出一定的图案。

已知该宿舍楼有 n 层,每层有 m 个房间,房间号从右向左递增,且房间号都是奇数。

由于这个组织为了表演控制宿舍通电造成了在宿舍的同学的诸多不便,现在小暗打算破坏他们的亮灯活动。
他可以和宿舍楼里相关宿舍的人私下勾结,使得本该亮灯的宿舍在亮灯时自主关掉自己房间的灯的开关,导致即使电闸控制通电,这个房间的灯光依然不亮,从而破坏原本计划摆出的图案。

现在给出原始计划摆出的图案,以及小暗打算恶搞成的新图案。请判断小暗的计划是否可行,如果可行输出要私下勾结的宿舍号(宿舍只有奇数号,从右到左房间号递增)。
Input

第一行输入两个整数 n、m。

接下来先输入 n 行,每行 m 个字符,表示初始的亮灯图案(@ 表示亮,. 表示暗)。
最后再输入 n 行,每行 m 个字符,表示小暗计划达成的亮灯图案。

1 <= n <= 9
1 <= m <= 50
Output

如果小暗的计划可以达成,则将所有需要勾结关掉开关的宿舍号输出,每行一个,顺序任意。
宿舍号的格式为:第一位是楼层号,第二位和第三位是房间序号,从 1 开始,不足 10 的前面补 0。

如果计划不可达成,输出 “bark”(不包括引号)。
Sample Input

5 5
@@@@@
@….
@@@@@
….@
@@@@@
…..
…..
@@@@@
…..
…..

Sample Output

101
103
105
107
109
201
409
501
503
505
507
509

Hint
Source
bLue

#include <iostream>
using namespace std;
const int nmax = 10;
const int mmax = 51;
int main() {
    char a[nmax][mmax],b[nmax][mmax];
    int n, m;
    cin >> n >> m;
    int i, j;
    int c[nmax * mmax];
    int k = 0;
    for(i = 1; i <= n; i++)
    {
        for(j = 1; j <= m; j++)
        {
            cin >> a[i][j];
        }
    }
    for(i = 1; i <= n; i++)
    {
        for(j = 1; j <= m; j++)
        {
            cin >> b[i][j];
        }
    }
    bool flag = true;
    for(i = 1; i <= n; i++)
    {
        for(j = 1; j <= m; j++)
        {
            if(a[i][j] == '@')
            {
                if(b[i][j] != '@')
                {
                    c[k++] = (n - i + 1)*100 + (m - j + 1)*2-1;
                }
            }
            else
            {
                if(b[i][j] == '@')
                {
                    flag = false;
                    break;
                }
            }
        }
        if(!flag)
        break;
    }
    if(!flag)
    {
        cout << "bark" << endl;
    }else
    {
        for(i = k-1; i >= 0; i--)
        cout << c[i] << endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值