前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Code Forces 22B Bargaining Table

Code Forces 22B Bargaining Table

作者头像
ShenduCC
发布2018-04-26 16:16:41
6020
发布2018-04-26 16:16:41
举报
文章被收录于专栏:算法修养

B. Bargaining Table

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

Bob wants to put a new bargaining table in his office. To do so he measured the office room thoroughly and drew its plan: Bob's office room is a rectangular room n × m meters. Each square meter of the room is either occupied by some furniture, or free. A bargaining table is rectangular, and should be placed so, that its sides are parallel to the office walls. Bob doesn't want to change or rearrange anything, that's why all the squares that will be occupied by the table should be initially free. Bob wants the new table to sit as many people as possible, thus its perimeter should be maximal. Help Bob find out the maximum possible perimeter of a bargaining table for his office.

Input

The first line contains 2 space-separated numbers n and m (1 ≤ n, m ≤ 25) — the office room dimensions. Then there follow n lines withm characters 0 or 1 each. 0 stands for a free square meter of the office room. 1 stands for an occupied square meter. It's guaranteed that at least one square meter in the room is free.

Output

Output one number — the maximum possible perimeter of a bargaining table for Bob's office room.

Examples

input

代码语言:javascript
复制
3 3
000
010
000

output

代码语言:javascript
复制
8

input

代码语言:javascript
复制
5 4
1100
0000
0000
0000
0000

output

16

暴力

代码语言:javascript
复制
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
#include <stdio.h>

using namespace std;
int n,m;
char a[30][30];
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        scanf("%s",a[i]+1);

    bool tag=true;
    int ans=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(a[i][j]=='1')
                continue;
            //cout<<a[i][j]<<endl;
            for(int l=1;l+i-1<=n;l++)
            {
                for(int r=1;r+j-1<=m;r++)
                {
                    tag=true;
                    for(int k=i;k<=i+l-1;k++)
                    {
                        for(int p=j;p<=r+j-1;p++)
                        {
                            if(a[k][p]=='1')
                               {
                                   tag=false;break;
                               }
                        }
                        if(!tag)
                            break;
                    }

                    if(tag)
                       ans=max(ans,(l+r)*2);
                }

            }
        }
    }
    printf("%d\n",ans);
    return 0;

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-04-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档