답안 #704288

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
704288 2023-03-02T03:01:36 Z willychan Dijamant (COCI22_dijamant) C++14
70 / 70
226 ms 234860 KB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
//#include<bits/extc++.h>
//__gnu_pbds


bool arr[2005][2005];

int dx[4] = {1,-1,0,0};
int dy[4] = {0,0,1,-1};

int n,m;
bool inbound(int x,int y){
	return (x>=0 && y>=0);
}

int xpymax,xpymin,xmymax,xmymin;
int cnt = 0;
void dfs(int x,int y){
	arr[x][y]=1;
	cnt++;
	xpymax = max(xpymax,x+y);
	xpymin = min(xpymin,x+y);
	xmymax = max(xmymax,x-y);
	xmymin = min(xmymin,x-y);
	for(int i=0;i<4;i++){
		if(inbound(x+dx[i] , y+dy[i])){
			if(arr[x+dx[i]][y+dy[i]]==0){
				dfs(x+dx[i],y+dy[i]);
			}
		}
	}
}


int main(){
	ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n>>m;	
	for(int i=0;i<2005;i++){
		arr[i][m+4]=1;
		arr[n+4][i]=1;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			char a;cin>>a;
			if(a=='#') arr[i][j]=1;
		}
	}
	int ans = 0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(!arr[i][j]) {
				xpymax = INT_MIN;
				xpymin = INT_MAX;
				xmymax = INT_MIN;
				xmymin = INT_MAX;
				cnt = 0;
				dfs(i,j);
				//cout<<i<<" "<<j<<"\n";
				//cout<<xpymax<<" "<<xpymin<<" "<<xmymax<<' '<<xmymin<<" "<<cnt<<"\n";
				if(xpymax-xpymin!=xmymax-xmymin || (xpymax-xpymin)%2) continue;
				int l = (xpymax-xpymin)/2+1;
				int area = (2*l*l)-(2*l)+1;
				//cout<<area<<"\n";
				if(cnt==area){
					ans++;
				}
	
						
			}
		}
	}
	cout<<ans<<"\n";
		
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4820 KB Output is correct
2 Correct 2 ms 4180 KB Output is correct
3 Correct 2 ms 4308 KB Output is correct
4 Correct 2 ms 4564 KB Output is correct
5 Correct 2 ms 4172 KB Output is correct
6 Correct 3 ms 4308 KB Output is correct
7 Correct 3 ms 4312 KB Output is correct
8 Correct 2 ms 4308 KB Output is correct
9 Correct 2 ms 4304 KB Output is correct
10 Correct 2 ms 4308 KB Output is correct
11 Correct 2 ms 4308 KB Output is correct
12 Correct 2 ms 4688 KB Output is correct
13 Correct 2 ms 4180 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4820 KB Output is correct
2 Correct 2 ms 4180 KB Output is correct
3 Correct 2 ms 4308 KB Output is correct
4 Correct 2 ms 4564 KB Output is correct
5 Correct 2 ms 4172 KB Output is correct
6 Correct 3 ms 4308 KB Output is correct
7 Correct 3 ms 4312 KB Output is correct
8 Correct 2 ms 4308 KB Output is correct
9 Correct 2 ms 4304 KB Output is correct
10 Correct 2 ms 4308 KB Output is correct
11 Correct 2 ms 4308 KB Output is correct
12 Correct 2 ms 4688 KB Output is correct
13 Correct 2 ms 4180 KB Output is correct
14 Correct 226 ms 234860 KB Output is correct
15 Correct 48 ms 4480 KB Output is correct
16 Correct 113 ms 5280 KB Output is correct
17 Correct 152 ms 115492 KB Output is correct
18 Correct 79 ms 5264 KB Output is correct
19 Correct 98 ms 32016 KB Output is correct
20 Correct 123 ms 48268 KB Output is correct
21 Correct 101 ms 38908 KB Output is correct
22 Correct 108 ms 13388 KB Output is correct
23 Correct 107 ms 20892 KB Output is correct
24 Correct 106 ms 18756 KB Output is correct
25 Correct 181 ms 169676 KB Output is correct
26 Correct 63 ms 5192 KB Output is correct