Submission #286085

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