제출 #443299

#제출 시각아이디문제언어결과실행 시간메모리
443299vanicRectangles (IOI19_rect)C++14
13 / 100
488 ms442276 KiB
#include "rect.h" #include <iostream> #include <vector> #include <algorithm> #include <cmath> #include <map> #include <array> using namespace std; typedef long long ll; const int maxn=2505, inf=1e9; const int xp[]={0, 1, 0, -1}; const int yp[]={1, 0, -1, 0}; int n, m; bool bio[maxn][maxn]; int v[maxn][maxn]; int maxx, maxy, minx, miny; int br; void dfs(int x, int y){ int xs, ys; br++; bio[x][y]=1; maxx=max(maxx, x); maxy=max(maxy, y); minx=min(minx, x); miny=min(miny, y); for(int i=0; i<4; i++){ xs=x+xp[i]; ys=y+yp[i]; if(xs>-1 && ys>-1 && xs<n && ys<m && !bio[xs][ys] && !v[xs][ys]){ dfs(xs, ys); } } } ll count_rectangles(vector < vector < int > > a){ n=a.size(); m=a[0].size(); ll sol=0; for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ v[i][j]=a[i][j]; } } for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ if(!a[i][j] && !bio[i][j]){ maxx=0; maxy=0; minx=inf; miny=inf; br=0; dfs(i, j); // cout << minx << ' ' << maxx << ' ' << miny << ' ' << maxy << endl; if(maxx==n-1 || maxy==m-1 || minx==0 || miny==0 || br!=(maxx-minx+1)*(maxy-miny+1)){ continue; } sol++; } } } return sol; }
#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...