Submission #1037392

#TimeUsernameProblemLanguageResultExecution timeMemory
1037392Marco_EscandonRectangles (IOI19_rect)C++17
50 / 100
5062 ms373076 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll su,iz,de, in; ll contt; vector<vector<ll>> v; ll dfs(ll a, ll b) { if(a==-1||b==-1||a==v.size()||b==v[0].size()) return false; if(v[a][b]==1) return true; contt++; su=min(a,su); in=max(a,in); iz=min(b,iz); de=max(b,de); v[a][b]=1; ll pl= true; if(dfs(a+1,b)==false) pl= false; if(dfs(a,b+1)==false) pl= false; if(dfs(a-1,b)==false) pl= false; if(dfs(a,b-1)==false) pl= false; return pl; } long long count_rectangles(std::vector<std::vector<int> > a) { if(a.size()*a[0].size()<=705*705) { ll cont=0; ll n=a.size();ll m=a[0].size(); for(int i=0; i<n-1; i++) { for(int j=0; j<m-1; j++) { for(int k=i+2; k<n; k++) { for(int l=j+2; l<m; l++) { ll pl=1; for(int o=i+1; o<k; o++) { for(int p=j+1; p<l; p++) { if(a[o][p]>=min(min(a[i][p],a[k][p]),min(a[o][j],a[o][l]))) { pl=0; goto fin1; } } } fin1:; cont+=pl; } } } } return cont; } ll cont=0; v.resize(a.size()); for(int i=0; i<a.size(); i++) { v[i].resize(a[i].size()); for(int j=0; j<a[0].size(); j++) { v[i][j]=a[i][j]; } } for(int i=1; i<a.size()-1; i++) { for(int j=1; j<a[0].size()-1; j++) { if(v[i][j]==0) { su= 1000000; in= 0; iz=1000000; de= 0; contt=0; if(dfs(i,j)==false) continue; //cout<<(in-su+1)*(de-iz+1)<<" "; if(contt==(in-su+1)*(de-iz+1)) { cont++; //cout<<i<<" "<< j<<"\n"; } } } } return cont; }

Compilation message (stderr)

rect.cpp: In function 'll dfs(ll, ll)':
rect.cpp:9:23: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::vector<long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 |     if(a==-1||b==-1||a==v.size()||b==v[0].size())
      |                      ~^~~~~~~~~~
rect.cpp:9:36: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 |     if(a==-1||b==-1||a==v.size()||b==v[0].size())
      |                                   ~^~~~~~~~~~~~~
rect.cpp: In function 'long long int count_rectangles(std::vector<std::vector<int> >)':
rect.cpp:61:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |     for(int i=0; i<a.size(); i++)
      |                  ~^~~~~~~~~
rect.cpp:64:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |         for(int j=0; j<a[0].size(); j++)
      |                      ~^~~~~~~~~~~~
rect.cpp:69:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   69 |     for(int i=1; i<a.size()-1; i++)
      |                  ~^~~~~~~~~~~
rect.cpp:71:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |         for(int j=1; j<a[0].size()-1; j++)
      |                      ~^~~~~~~~~~~~~~
#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...