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