Submission #571283

#TimeUsernameProblemLanguageResultExecution timeMemory
571283azberjibiouRectangles (IOI19_rect)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#include "rect.h"
using namespace std;
typedef struct rect{
    int x1, x2, y1, y2;
    rect() : x1(0), x2(0), y1(0), y2(0) {}
    rect(int x1, int x2, int y1, int y2) : x1(x1), x2(x2), y1(y1), y2(y2) {}
}rect;
int N, M;
vector <rect> v;
bool cmp1(rect a, rect b)
{
    if(a.x1!=b.x1)  return a.x1<b.x1;
    if(a.x2!=b.x2)  return a.x2<b.x2;
    if(a.y1!=b.y1)  return a.y1<b.y1;
    return a.y2<b.y2;
}
long long count_rectangles(std::vector<std::vector<int> > a) {
    N=a.size();
    M=a[0].size();
    for(int i=1;i<N-1;i++)
    {
        for(int j=1;j<M-1;j++)
        {
            int u=i, d=i, l=j, r=j;
            while(u!=-1 && a[u][j]<=a[i][j])    u--;
            while(d!=N && a[d][j]<=a[i][j]) d++;
            while(l!=-1 && a[i][l]<=a[i][j])    l--;
            while(r!=M && a[i][r]<=a[i][j]) r++;
            if(u!=-1 && d!=N && l!=-1 && r!=M)  v.emplace_back(u+1, d-1, l+1, r-1);
        }
    }
    sort(v.begin(), v.end(), cmp1);
    v.erase(unique(v.begin(), v.end()), v.end());
    int ans=0;
    for(auto ele : v)
    {
        bool ok=true;
        for(int i=ele.x1;i<=ele.x2;i++)
        {
            for(int j=ele.y1;j<=ele.y2;j++)
            {
                if(a[ele.x1-1][j]<=a[i][j] || a[ele.x2+1][j]<=a[i][j] || a[i][ele.y1-1]<=a[i][j] || a[i][ele.y2+1]<=a[i][j])
                    ok=false;
            }
        }
        if(ok)  ans++;
    }
	return ans;
}

Compilation message (stderr)

In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from rect.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h: In instantiation of 'bool __gnu_cxx::__ops::_Iter_equal_to_iter::operator()(_Iterator1, _Iterator2) const [with _Iterator1 = __gnu_cxx::__normal_iterator<rect*, std::vector<rect> >; _Iterator2 = __gnu_cxx::__normal_iterator<rect*, std::vector<rect> >]':
/usr/include/c++/10/bits/stl_algo.h:951:20:   required from '_ForwardIterator std::__unique(_ForwardIterator, _ForwardIterator, _BinaryPredicate) [with _ForwardIterator = __gnu_cxx::__normal_iterator<rect*, std::vector<rect> >; _BinaryPredicate = __gnu_cxx::__ops::_Iter_equal_to_iter]'
/usr/include/c++/10/bits/stl_algo.h:982:27:   required from '_FIter std::unique(_FIter, _FIter) [with _FIter = __gnu_cxx::__normal_iterator<rect*, std::vector<rect> >]'
rect.cpp:34:38:   required from here
/usr/include/c++/10/bits/predefined_ops.h:115:23: error: no match for 'operator==' (operand types are 'rect' and 'rect')
  115 |       { return *__it1 == *__it2; }
      |                ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:67,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from rect.cpp:1:
/usr/include/c++/10/bits/stl_iterator.h:1064:5: note: candidate: 'template<class _IteratorL, class _IteratorR, class _Container> bool __gnu_cxx::operator==(const __gnu_cxx::__normal_iterator<_IteratorL, _Container>&, const __gnu_cxx::__normal_iterator<_IteratorR, _Container>&)'
 1064 |     operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_iterator.h:1064:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from rect.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:115:23: note:   'rect' is not derived from 'const __gnu_cxx::__normal_iterator<_IteratorL, _Container>'
  115 |       { return *__it1 == *__it2; }
      |                ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:67,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from rect.cpp:1:
/usr/include/c++/10/bits/stl_iterator.h:1072:5: note: candidate: 'template<class _Iterator, class _Container> bool __gnu_cxx::operator==(const __gnu_cxx::__normal_iterator<_Iterator, _Container>&, const __gnu_cxx::__normal_iterator<_Iterator, _Container>&)'
 1072 |     operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_iterator.h:1072:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from rect.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:115:23: note:   'rect' is not derived from 'const __gnu_cxx::__normal_iterator<_Iterator, _Container>'
  115 |       { return *__it1 == *__it2; }
      |                ~~~~~~~^~~~~~~~~