Submission #547095

# Submission time Handle Problem Language Result Execution time Memory
547095 2022-04-09T14:05:38 Z errorgorn Dijamant (COCI22_dijamant) C++17
70 / 70
237 ms 267232 KB
// Super Idol的笑容
//    都没你的甜
//  八月正午的阳光
//    都没你耀眼
//  热爱105°C的你
// 滴滴清纯的蒸馏水

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/rope>
using namespace std;
using namespace __gnu_pbds;
using namespace __gnu_cxx;
#define int long long
#define ll long long
#define ii pair<ll,ll>
#define iii pair<ii,ll>
#define fi first
#define se second
#define endl '\n'
#define debug(x) cout << #x << ": " << x << endl

#define pub push_back
#define pob pop_back
#define puf push_front
#define pof pop_front
#define lb lower_bound
#define ub upper_bound

#define rep(x,start,end) for(auto x=(start)-((start)>(end));x!=(end)-((start)>(end));((start)<(end)?x++:x--))
#define all(x) (x).begin(),(x).end()
#define sz(x) (int)(x).size()

#define indexed_set tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update>
//change less to less_equal for non distinct pbds, but erase will bug

mt19937 rng(chrono::system_clock::now().time_since_epoch().count());

const int S=2005;

int n,m;
string inp[2005];
char grid[S+5][S+5];
bool vis[S+5][S+5];

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

int a,b,c,d;
int cnt;

void dfs(int i,int j){
	vis[i][j]=true;
	a=min(a,i-j),b=max(b,i-j);
	c=min(c,i+j),d=max(d,i+j);
	cnt++;
	
	rep(z,0,4){
		int aa=i+dx[z],bb=j+dy[z];
		if (aa<0 || S<=aa || bb<0 || S<=bb || vis[aa][bb] || grid[aa][bb]=='#') continue;
		dfs(aa,bb);
	}
}

signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin.exceptions(ios::badbit | ios::failbit);
	
	cin>>n>>m;
	rep(x,0,n) cin>>inp[x];
	
	memset(grid,'.',sizeof(grid));
	
	rep(x,0,n) rep(y,0,m) grid[x+1][y+1]=inp[x][y];
	
	dfs(0,0);
	
	int ans=0;
	rep(x,1,n+1) rep(y,1,m+1) if (grid[x][y]=='.' && !vis[x][y]){
		a=c=1e9;
		b=d=-1e9;
		cnt=0;
		
		dfs(x,y);
		
		if ((b-a+1)==(d-c+1) && (b-a+1)*(d-c+1)==cnt*2-1) ans++;
	}
	
	cout<<ans<<endl;
}
# Verdict Execution time Memory Grader output
1 Correct 196 ms 260008 KB Output is correct
2 Correct 210 ms 259316 KB Output is correct
3 Correct 198 ms 257736 KB Output is correct
4 Correct 196 ms 252128 KB Output is correct
5 Correct 211 ms 259404 KB Output is correct
6 Correct 203 ms 255592 KB Output is correct
7 Correct 189 ms 254368 KB Output is correct
8 Correct 208 ms 256176 KB Output is correct
9 Correct 198 ms 257404 KB Output is correct
10 Correct 189 ms 257352 KB Output is correct
11 Correct 214 ms 255760 KB Output is correct
12 Correct 210 ms 256780 KB Output is correct
13 Correct 194 ms 259340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 196 ms 260008 KB Output is correct
2 Correct 210 ms 259316 KB Output is correct
3 Correct 198 ms 257736 KB Output is correct
4 Correct 196 ms 252128 KB Output is correct
5 Correct 211 ms 259404 KB Output is correct
6 Correct 203 ms 255592 KB Output is correct
7 Correct 189 ms 254368 KB Output is correct
8 Correct 208 ms 256176 KB Output is correct
9 Correct 198 ms 257404 KB Output is correct
10 Correct 189 ms 257352 KB Output is correct
11 Correct 214 ms 255760 KB Output is correct
12 Correct 210 ms 256780 KB Output is correct
13 Correct 194 ms 259340 KB Output is correct
14 Correct 237 ms 267232 KB Output is correct
15 Correct 34 ms 31312 KB Output is correct
16 Correct 113 ms 46776 KB Output is correct
17 Correct 149 ms 146248 KB Output is correct
18 Correct 36 ms 20248 KB Output is correct
19 Correct 111 ms 55996 KB Output is correct
20 Correct 95 ms 42168 KB Output is correct
21 Correct 93 ms 60068 KB Output is correct
22 Correct 114 ms 46272 KB Output is correct
23 Correct 129 ms 55328 KB Output is correct
24 Correct 109 ms 39292 KB Output is correct
25 Correct 193 ms 230976 KB Output is correct
26 Correct 71 ms 49988 KB Output is correct