Submission #667331

#TimeUsernameProblemLanguageResultExecution timeMemory
667331coding_snorlaxRectangles (IOI19_rect)C++14
13 / 100
1088 ms591836 KiB
#include<bits/stdc++.h> #include "rect.h" using namespace std; int n,m; int List[2505][2505]; int vis[2505][2505]={0}; vector<pair<int,int>> tmp; int flag=1; int Move[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; void dfs(int x,int y){ if( x==0 || y==0 || x==n || y==m){ flag=0; return; } vis[x][y]=1; tmp.push_back(make_pair(x,y)); for(int i=0;i<4;i++){ if(!vis[x+Move[i][0]][y+Move[i][1]] && List[x+Move[i][0]][y+Move[i][1]]==0) dfs(x+Move[i][0],y+Move[i][1]); } } long long int count_rectangles(vector<vector<int>> a){ n=a.size(); m=a[0].size(); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ List[i][j]=a[i][j]; } } long long int answer=0; for(int i=1;i<n-1;i++){ for(int j=1;j<m-1;j++){ if(!vis[i][j] && a[i][j]==0){ flag=1; tmp.clear(); dfs(i,j); sort(tmp.begin(),tmp.end()); int flag2=1; /* cout<<"---\n"; for(int i=0;i<(int)tmp.size();i++){ cout<<tmp[i].first<<" "<<tmp[i].second<<endl; } cout<<endl; cout<<flag<<" "<<flag2<<" \n"; cout<<"---\n"; */ if(((tmp[(int)tmp.size()-1].first-tmp[0].first+1)*(tmp[(int)tmp.size()-1].second-tmp[0].second+1))==(int)tmp.size() && flag){ for(int i=0;i<(int)tmp.size();i++){ if((tmp[i].second>tmp[(int)tmp.size()-1].second) || (tmp[i].second<tmp[0].second)) flag2=0; } if(flag2) answer++; } } } } return answer; }
#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...