제출 #1330426

#제출 시각아이디문제언어결과실행 시간메모리
1330426secondaccountmaybeDijamant (COCI22_dijamant)C++20
70 / 70
192 ms179940 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll m=2005;
ll n,k,s;
char c[m][m];
bool b[m][m];
ll dx[4]={0,1,0,-1};
ll dy[4]={1,0,-1,0};
ll l,r,u,d,o,t;
void f(ll x,ll y){
	if(x==0||x==n+1||y==0||y==k+1)
	{
		o=0;
		return;
	}
	if(b[x][y]||c[x][y]=='#')
	{
		return;
	}
	b[x][y]=1;
	t++;
	l=min(l,x+y);
	r=max(r,x+y);
	u=min(u,x-y);
	d=max(d,x-y);
	for(ll i=0;i<4;i++)
	{
		ll p=x+dx[i];
		ll q=y+dy[i];
		f(p,q);
	}
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>n>>k;
	for(ll i=1;i<=n;i++)
	{
		for(ll j=1;j<=k;j++)
		{
			cin>>c[i][j];
		}
	}
	for(ll i=1;i<=n;i++)
	{
		for(ll j=1;j<=k;j++)
		{
			if(b[i][j]||c[i][j]=='#')
			{
				continue;
			}
			l=u=1e18;
			r=d=-1e18;
			o=1;
			t=0;
			f(i,j);
			if(r-l==d-u&&(r-l)%2==0&&o)
			{
				ll v=(r-l)/2+1;
				if(t==2*v*v-2*v+1)
				{
					s++;
				}
			}
		}
	}
	cout<<s<<endl;
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...