B. Black Square
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

Polycarp has a checkered sheet of paper of size n × m. Polycarp painted some of cells with black, the others remained white. Inspired by Malevich's "Black Square", Polycarp wants to paint minimum possible number of white cells with black so that all black cells form a square.

You are to determine the minimum possible number of cells needed to be painted black so that the black cells form a black square with sides parallel to the painting's sides. All the cells that do not belong to the square should be white. The square's side should have positive length.

Input

The first line contains two integers n and m (1 ≤ n, m ≤ 100) — the sizes of the sheet.

The next n lines contain m letters 'B' or 'W' each — the description of initial cells' colors. If a letter is 'B', then the corresponding cell is painted black, otherwise it is painted white.

Output

Print the minimum number of cells needed to be painted black so that the black cells form a black square with sides parallel to the painting's sides. All the cells that do not belong to the square should be white. If it is impossible, print -1.

Examples
input
5 4
WWWW
WWWB
WWWB
WWBB
WWWW
output
5
input
1 2
BB
output
-1
input
3 3
WWW
WWW
WWW
output
1
Note

In the first example it is needed to paint 5 cells — (2, 2), (2, 3), (3, 2), (3, 3) and (4, 2). Then there will be a square with side equal to three, and the upper left corner in (2, 2).

In the second example all the cells are painted black and form a rectangle, so it's impossible to get a square.

In the third example all cells are colored white, so it's sufficient to color any cell black.

—————————————————————————————————

题目的意思是给出一张黑白的图,问把一些白色的点染成黑色使得所有黑色的点在一个正方形内,问最少染多少的白色点

思路:直接记录黑色点行和列的最大最小值,这样就能算出正方形最小值,然后判断行列数目是否达到这个正方形

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <vector>
#include <bitset> using namespace std; #define LL long long
const int INF = 0x3f3f3f3f; int m,n;
char mp[200][200];
int main()
{
scanf("%d%d",&m,&n);
int mni=INF,mnj=INF,mxi=-1,mxj=-1;
int cnt=0;
for(int i=0; i<m; i++)
{
scanf("%s",&mp[i]);
for(int j=0;j<n;j++)
{
if(mp[i][j]=='B')
{
mni=min(mni,i);
mnj=min(mnj,j);
mxi=max(mxi,i);
mxj=max(mxj,j);
cnt++;
}
}
}
if(mni==INF&&mnj==INF&&mxi==-1&&mxj==-1)
printf("1\n");
else if(mxi-mni>=mxj-mnj)
{
if(n<mxi-mni+1)
printf("-1\n");
else
printf("%d\n",(mxi-mni+1)*(mxi-mni+1)-cnt);
}
else
{
if(m<mxj-mnj+1)
printf("-1\n");
else
printf("%d\n",(mxj-mnj+1)*(mxj-mnj+1)-cnt);
}
return 0;
}

最新文章

  1. [C]遍历目录下所有文件
  2. 4. Prototype(原型)
  3. Asp.Net Form验证不通过,重复登录
  4. c# base64 编码解码
  5. Shell数组的增删改查
  6. lintcode:最大间隔
  7. HDU 5387 Clock
  8. Qt编译postgreSQL驱动
  9. (Excel导出失败)检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失
  10. JDK PATH 和 CLASSPATH环境变量的作用及其配置
  11. ios 多线程开发(二)线程管理
  12. 【二分图】P3386洛谷模板
  13. MongoDB中文档操作(二)
  14. java8新特征
  15. 如何建立nfs网络文件系统
  16. bootgrid修改成可以全勾选和全取消勾选操作
  17. 图像控件 ImageControl
  18. 原生ajax的请求封装get和post
  19. 【Linux】【Maven】Linux下安装和配置Maven
  20. iis支持asp.net4.0的注册命令使用方法

热门文章

  1. Oracle 循环查询
  2. python3:实现字符串的全排列(有重复字符)
  3. docker命令相关
  4. Selenium IDE录制脚本时弹出窗口的完美处理
  5. leetcode136
  6. Java 字符串拼接5种方式性能比较
  7. java学习--异常
  8. 电商项目中使用Redis实现秒杀功能
  9. 2、订单填写页面 /items/write?skuId=10&amp;orderNo=201903211033410001
  10. mysql 按出现次数排序