Submission #1126949

#TimeUsernameProblemLanguageResultExecution timeMemory
1126949bekzhan29Bomb (IZhO17_bomb)C++20
24 / 100
183 ms91540 KiB
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define INF (long long)(2e15)
#define mod2 998244353
#define mod 1000000007
#define eps 1e-9
#define abs(x) ((x)>=0?(x):-(x))
#define y1 solai
#define fi first
#define se second
typedef int ll;
typedef long double ld;
typedef pair<ll,ll> pll;
typedef pair<double,double> pdd;
typedef pair<pll, ll> plll;
mt19937 rng(29);
const ll N=3100;
ll n,m,a[N][N],h,w,u[N][N],sum[N][N];
string s;
ll get(ll x, ll y)
{
	return sum[x+h-1][y+w-1]-sum[x-1][y+w-1]-sum[x+h-1][y-1]+sum[x-1][y-1];
}
int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	cin>>n>>m;
	h=n;
	w=m;
	for(ll i=1;i<=n;i++)
	{
		cin>>s;
		for(ll j=1;j<=m;j++)
		{
			a[i][j]=s[j-1]-'0';
			sum[i][j]=a[i][j]+sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];
		}
	}
	for(ll i=1;i<=n;i++)
		for(ll j=1;j<=m;j++)
		{
			if(!a[i][j])
				continue;
			if(a[i][j+1]==0)
			{
				ll len=0;
				for(ll k=j;k>=1&&a[i][k];k--)
					len++;
				w=min(w,len);
			}
			if(a[i+1][j]==0)
			{
				ll len=0;
				for(ll k=i;k>=1&&a[k][j];k--)
					len++;
				h=min(h,len);
			}
		}
	for(ll i=1;i<=n-h+1;i++)
		for(ll j=1;j<=m-w+1;j++)
			if(get(i,j)==h*w)
			{
				u[i][j]++;
				u[i+h][j+w]++;
				u[i+h][j]--;
				u[i][j+w]--;
			}
	for(ll i=1;i<=n;i++)
		for(ll j=1;j<=m;j++)
			u[i][j]+=u[i-1][j]+u[i][j-1]-u[i-1][j-1];
	for(ll i=1;i<=n;i++)
		for(ll j=1;j<=m;j++)
			if(!u[i][j]&&a[i][j])
				assert(0);
	cout<<h*w;
}
/*
*/
#Verdict Execution timeMemoryGrader output
Fetching results...