Submission #153384

#TimeUsernameProblemLanguageResultExecution timeMemory
153384tinjyuRectangles (IOI19_rect)C++14
15 / 100
5064 ms52720 KiB
#include "rect.h" #include <iostream> #include <cstring> using namespace std; long long int tag[85][2505],sx,sy,n,m,ans=0,map[85][2505]; int find(int x,int y) { if(tag[x][y]==1)return 0; tag[x][y]=1; if(x==n-1 || y==m-1)return 0; int can1=1,can2=1; //cout<<sx<<" "<<x<<" "<<sy<<" "<<y<<endl; //cout<<"can1"<<endl; for(int i=sx;i<=x;i++) { long long int ma=0; for(int j=sy;j<=y;j++) { //cout<<i<<" "<<j<<" "; ma=max(map[i][j],ma); } //cout<<endl; if(ma>=map[i][sy-1] || ma>=map[i][y+1]) { can1=0; break; } } //cout<<"can2"<<endl; for(int j=sy;j<=y;j++) { long long int ma=0; for(int i=sx;i<=x;i++) { //cout<<i<<" "<<j<<" "; ma=max(map[i][j],ma); } //cout<<endl; if(ma>=map[sx-1][j] || ma>=map[x+1][j]) { can2=0; break; } } if(can1==1 && can2==1) { ans++; } if(can2==1)find(x,y+1); if(can1==1)find(x+1,y); else find(x+1,y+1); return 0; } long long count_rectangles(std::vector<std::vector<int> > a) { n=a.size(); m=a[0].size(); for(int i=0;i<n;i++) { for(int j=0;j<m;j++)map[i][j]=a[i][j]; } for(int i=1;i<n-1;i++) { for(int j=1;j<m-1;j++) { memset(tag, 0, sizeof(tag)); sx=i,sy=j; find(i,j); } } return ans; }
#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...