Submission #1026064

#TimeUsernameProblemLanguageResultExecution timeMemory
1026064tolbiGame (eJOI20_game)C++17
20 / 100
1 ms440 KiB
#include <bits/stdc++.h>
using namespace std;
struct DSU{
	vector<vector<array<int,2>>> par;
	vector<vector<int>> sz;
	DSU(int n, int m){
		par.resize(n,vector<array<int,2>>(m));
		sz.resize(n,vector<int>(m,1));
		for (int i = 0; i < n; ++i)
		{
			for (int j = 0; j < m; ++j){
				par[i][j]={i,j};
			}
		}
	}
	array<int,2> find(array<int,2> node){
		if (par[node[0]][node[1]]==node) return node;
		return par[node[0]][node[1]]=find(par[node[0]][node[1]]);
	}
	void merge(array<int,2> a, array<int,2> b){
		a=find(a);
		b=find(b);
		if (a==b) return;
		sz[a[0]][a[1]]+=sz[b[0]][b[1]];
		sz[b[0]][b[1]]=0;
		par[b[0]][b[1]]=a;
	}
};
int main(){
	int n,m;cin>>n>>m;
	DSU dsu(n,m);
	vector<int> LMAO;
	vector<vector<int>> say(n,vector<int>(m));
	for (int i = 0; i < n+1; ++i)
	{
		string str;cin>>str;
		for (int j = 0; j < m; j++){
			if (i-1>=0 && i<n){
				if (str[j]=='0'){
					dsu.merge({i,j},{i-1,j});
				}
			}
			if (i<n && str[j]=='1') say[i][j]++;
			if (i-1>=0 && str[j]=='1') say[i-1][j]++;
		}
	}
	for (int i = 0; i < n; i++){
		string str;cin>>str;
		for (int j = 0; j <= m; j++){
			if (j-1>=0 && j<m){
				if (str[j]=='0'){
					dsu.merge({i,j},{i,j-1});
				}
			}
			if (j<m && str[j]=='1') say[i][j]++;
			if (j-1>=0 && str[j]=='1') say[i][j-1]++;
		}
	}
	for (int i = 0; i < n; i++){
		for (int j = 0; j < m; j++){
			if (say[i][j]==4) continue;
			if (dsu.find({i,j})!=array<int,2>{i,j}) continue;
			LMAO.push_back(dsu.sz[i][j]);
		}
	}
	sort(LMAO.begin(), LMAO.end());
	/*
	cout<<LMAO.size()<<endl;
	for (int i = 0; i < LMAO.size(); ++i)
	{
		cout<<LMAO[i]<<" ";
	}
	cout<<endl;
	*/
	if (LMAO.size()==1){
		cout<<-LMAO.back()<<endl;
	}
	else cout<<"N/A"<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...