제출 #286085

#제출 시각아이디문제언어결과실행 시간메모리
286085kshitij_sodaniRectangles (IOI19_rect)C++14
23 / 100
793 ms405076 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long llo;
#define mp make_pair
#define pb push_back
#define a first 
#define b second
//#define endl '\n' 


#include "rect.h"
vector<vector<int>> it;
vector<int> x={1,-1,0,0};
vector<int> y={0,0,-1,1};
int vis[2501][2501];
int n,m;
vector<pair<int,int>> comp;
void dfs(int i,int j){
	vis[i][j]=1;
	comp.pb({i,j});
	//<<i<<",,"<<j<<endl;
	for(int ii=0;ii<4;ii++){
		int xx=i+x[ii];
		int yy=j+y[ii];
		if(xx<0 or yy<0 or xx>=n or yy>=m){
			continue;
		}
		if(it[xx][yy]==0){
			if(vis[xx][yy]==0){
				dfs(xx,yy);
			}
		}
	}

}
llo count_rectangles(vector<vector<int>> ac) {
	it=ac;
	/*for(auto j:ac){
		for(auto i:j){
			cout<<i<<".";
		}
		cout<<endl;
	}*/
	n=it.size();
	m=it[0].size();
	if(n<=2 or m<=2){
		return 0;
	}
	if(n==3){
		llo co=0;
		for(int i=1;i<m-1;i++){
			int ma=it[1][i];

			for(int j=i;j<m-1;j++){
				if(it[1][j]>=min(it[0][j],it[2][j])){
					break;
				}
				ma=max(ma,it[1][j]);
				if(ma<min(it[1][i-1],it[1][j+1])){
					co+=1;
				}
			}
		}
		return co;
	}
	int co=0;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			comp.clear();
			if(it[i][j]==0){
				if(vis[i][j]==0){
					dfs(i,j);
					int mi1=0;
					int mi2=n;
					int ma1=0;
					int ma2=m;
					int st=1;
					for(auto jj:comp){
						mi1=max(mi1,jj.a);
						mi2=min(mi2,jj.a);
						ma1=max(ma1,jj.b);
						ma2=min(ma2,jj.b);
						if(jj.a==0 or jj.a==n-1 or jj.b==0 or jj.b==m-1){
							st=0;
						}
					}
					if((int)(comp.size())==(mi1-mi2+1)*(ma1-ma2+1)){
						co+=st;
					//	cout<<i<<":"<<j<<endl;
					}
				}
			}
		}
	}
	return co;













	return 1;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...