Submission #1065115

#TimeUsernameProblemLanguageResultExecution timeMemory
1065115aaaaaarrozRectangles (IOI19_rect)C++17
0 / 100
99 ms23208 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
bool limites(int n, int m, int x, int y){
    return x>=0&&x<n&&y>=0&&y<m;
}
ll count_rectangles(const vector<vector<int>>a) {
    ll rect=0;
    int n = a.size();
    int m = a[0].size();
    vector<vector<bool>>v(n,vector<bool>(m));
    vector<int>dx={0,-1,0,1};
    vector<int>dy={1,0,-1,0};
    for(int i=1;i<n-1;i++){
        for(int j=1;j<m-1;j++){
            if(!v[i][j]&&a[i][j]==0){
                v[i][j]=true;
                queue<pair<int,int>>cola;
                cola.push({i,j});
                int l_x=n,r_x=0,l_y=m,r_y=0;
                int cnt=0;
                while(!cola.empty()){
                    pair<int,int>nodo=cola.front();
                    cola.pop();
                    l_x=min(l_x,nodo.first);
                    r_x=max(r_x,nodo.first);
                    l_y=min(l_y,nodo.second);
                    r_y=max(r_y,nodo.second);
                    cnt++;
                    for(int i=0;i<4;i++){
                        int x=nodo.first+dx[i],y=nodo.second+dy[i];
                        if(limites(n,m,x,y)){
                            if(a[x][y]==0){
                                if(!v[x][y]){
                                    v[x][y]=true;
                                    cola.push({x,y});
                                }
                            }
                        }
                    }
                }
                if(l_x==0)continue;
                if(r_x==n)continue;
                if(l_y==0)continue;
                if(r_y==m)continue;
                if(cnt==((r_x-l_x+1)*(r_y-l_y+1))){
                    rect++;
                }
            }
        }
    }
    return rect;
}

#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...