제출 #156312

#제출 시각아이디문제언어결과실행 시간메모리
156312wilwxkRectangles (IOI19_rect)C++14
컴파일 에러
0 ms0 KiB
#include "rect.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN=2503; int v[MAXN][MAXN]; short limite[MAXN][MAXN][4]; short qv[MAXN][MAXN][4]; short seg[4][MAXN][4*MAXN]; unordered_set<tuple<int, int, int, int> > respf; int n, m; void histoi() { for(int i=0; i<n; i++) { stack<pair<int, int> > st; for(int j=0; j<m; j++) { while(st.size()&&st.top().first<v[i][j]) { qv[i][st.top().second][0]=j; st.pop(); } limite[i][j][2]= st.size() ? st.top().second : -1; st.push({v[i][j], j}); } while(st.size()) st.pop(); for(int j=m-1; j>=0; j--) { while(st.size()&&st.top().first<v[i][j]) { qv[i][st.top().second][2]=j; st.pop(); } limite[i][j][0]= st.size() ? st.top().second : m; st.push({v[i][j], j}); } } } void histoj() { for(int j=0; j<m; j++) { stack<pair<int, int> > st; for(int i=0; i<n; i++) { while(st.size()&&st.top().first<v[i][j]) { qv[st.top().second][j][3]=i; st.pop(); } limite[i][j][1]= st.size() ? st.top().second : -1; st.push({v[i][j], i}); } while(st.size()) st.pop(); for(int i=n-1; i>=0; i--) { while(st.size()&&st.top().first<v[i][j]) { qv[st.top().second][j][1]=i; st.pop(); } limite[i][j][3]= st.size() ? st.top().second : n; st.push({v[i][j], i}); } } } void junta(int sind, int e, int d, int k, int k2) { if(k==0||k==3) seg[k][k2][sind]=min(seg[k][k2][e], seg[k][k2][d]); else seg[k][k2][sind]=max(seg[k][k2][e], seg[k][k2][d]); } void build(int sind, int ini, int fim, int k, int k2) { if(ini==fim) { if(k==0||k==2) seg[k][k2][sind]=limite[ini][k2][k]; else seg[k][k2][sind]=limite[k2][ini][k]; return; } int mid=(ini+fim)/2; int e=sind*2; int d=e+1; build(e, ini, mid, k, k2); build(d, mid+1, fim, k, k2); junta(sind, e, d, k, k2); } void query(int sind, int ini, int fim, int qini, int qfim, int k, int k2) { if(sind==1) { if(k==0||k==3) seg[k][k2][0]=MAXN; else seg[k][k2][0]=-1; } if(qini<=ini&&qfim>=fim) { junta(0, 0, sind, k, k2); return; } int mid=(ini+fim)/2; int e=sind*2; int d=e+1; if(qini<=mid) query(e, ini, mid, qini, qfim, k, k2); if(qfim>mid) query(d, mid+1, fim, qini, qfim, k, k2); } bool checa(int a, int b, int c, int d) { int i, j, i2, j2; i=min(a, c); i2=max(a, c); j=min(b, d); j2=max(b, d); if(i<0||j<0||i2>n-1||j2>m-1) return 0; // printf("checa %d %d %d %d\n", i, j, i2, j2); query(1, 0, m-1, j+1, j2-1, 3, i); int aa=seg[3][i][0]; if(aa<i2) return 0; query(1, 0, m-1, j+1, j2-1, 1, i2); int bb=seg[1][i2][0]; if(bb>i) return 0; query(1, 0, n-1, i+1, i2-1, 0, j); int cc=seg[0][j][0]; if(cc<j2) return 0; query(1, 0, n-1, i+1, i2-1, 2, j2); int dd=seg[2][j2][0]; if(dd>j) return 0; // printf("ok %d %d %d %d\n", aa, bb, cc, dd); return 1; } ll count_rectangles(vector< vector<int> > A) { n=A.size(); m=A[0].size(); for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { v[i][j]=A[i][j]; qv[i][j][0]=m; qv[i][j][1]=-1; qv[i][j][2]=-1; qv[i][j][3]=n; } } histoi(); histoj(); // for(int i=0; i<n; i++) { // for(int j=0; j<m; j++) printf("%d ", qv[i][j][0]); // printf("\n"); // } for(int i=0; i<n; i++) build(1, 0, m-1, 1, i), build(1, 0, m-1, 3, i); for(int j=0; j<m; j++) build(1, 0, n-1, 0, j), build(1, 0, n-1, 2, j); for(int ii=1; ii<n-1; ii++) { for(int jj=1; jj<m-1; jj++) { // printf("%d %d\n", ii, jj); int i=qv[ii][jj][1]; int j=qv[ii][jj][2]; int i2=qv[ii][jj][3]; int j2=qv[ii][jj][0]; if(respf.find({i, j, i2, j2})!=respf.end()) continue; if(checa(i, j, i2, j2)) respf.insert({i, j, i2, j2}); } } return respf.size(); }

컴파일 시 표준 에러 (stderr) 메시지

In file included from /usr/include/c++/7/bits/hashtable.h:35:0,
                 from /usr/include/c++/7/unordered_map:47,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:117,
                 from rect.cpp:2:
/usr/include/c++/7/bits/hashtable_policy.h: In instantiation of 'struct std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > >':
/usr/include/c++/7/type_traits:143:12:   required from 'struct std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > >'
/usr/include/c++/7/type_traits:154:31:   required from 'struct std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
/usr/include/c++/7/bits/unordered_set.h:98:63:   required from 'class std::unordered_set<std::tuple<int, int, int, int> >'
rect.cpp:11:43:   required from here
/usr/include/c++/7/bits/hashtable_policy.h:87:34: error: no match for call to '(const std::hash<std::tuple<int, int, int, int> >) (const std::tuple<int, int, int, int>&)'
  noexcept(declval<const _Hash&>()(declval<const _Key&>()))>
           ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/7/bits/move.h:54:0,
                 from /usr/include/c++/7/bits/stl_pair.h:59,
                 from /usr/include/c++/7/bits/stl_algobase.h:64,
                 from /usr/include/c++/7/vector:60,
                 from rect.h:5,
                 from rect.cpp:1:
/usr/include/c++/7/type_traits: In instantiation of 'struct std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >':
/usr/include/c++/7/bits/unordered_set.h:98:63:   required from 'class std::unordered_set<std::tuple<int, int, int, int> >'
rect.cpp:11:43:   required from here
/usr/include/c++/7/type_traits:154:31: error: 'value' is not a member of 'std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > >'
     : public __bool_constant<!bool(_Pp::value)>
                               ^~~~~~~~~~~~~~~~
In file included from /usr/include/c++/7/unordered_set:48:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:118,
                 from rect.cpp:2:
/usr/include/c++/7/bits/unordered_set.h: In instantiation of 'class std::unordered_set<std::tuple<int, int, int, int> >':
rect.cpp:11:43:   required from here
/usr/include/c++/7/bits/unordered_set.h:98:63: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef __uset_hashtable<_Value, _Hash, _Pred, _Alloc>  _Hashtable;
                                                               ^~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:105:45: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::key_type key_type;
                                             ^~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:106:47: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::value_type value_type;
                                               ^~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:107:43: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::hasher hasher;
                                           ^~~~~~
/usr/include/c++/7/bits/unordered_set.h:108:46: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::key_equal key_equal;
                                              ^~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:109:51: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::allocator_type allocator_type;
                                                   ^~~~~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:114:45: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::pointer  pointer;
                                             ^~~~~~~
/usr/include/c++/7/bits/unordered_set.h:115:50: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::const_pointer const_pointer;
                                                  ^~~~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:116:47: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::reference  reference;
                                               ^~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:117:52: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::const_reference const_reference;
                                                    ^~~~~~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:118:46: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::iterator  iterator;
                                              ^~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:119:51: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::const_iterator const_iterator;
                                                   ^~~~~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:120:51: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::local_iterator local_iterator;
                                                   ^~~~~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:121:57: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::const_local_iterator const_local_iterator;
                                                         ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:122:47: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::size_type  size_type;
                                               ^~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:123:52: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       typedef typename _Hashtable::difference_type difference_type;
                                                    ^~~~~~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:282:7: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       operator=(initializer_list<value_type> __l)
       ^~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:375:2: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
  emplace(_Args&&... __args)
  ^~~~~~~
/usr/include/c++/7/bits/unordered_set.h:419:7: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       insert(const value_type& __x)
       ^~~~~~
/usr/include/c++/7/bits/unordered_set.h:423:7: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       insert(value_type&& __x)
       ^~~~~~
/usr/include/c++/7/bits/unordered_set.h:478:7: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       insert(initializer_list<value_type> __l)
       ^~~~~~
/usr/include/c++/7/bits/unordered_set.h:679:7: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       equal_range(const key_type& __x)
       ^~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:683:7: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<std::hash<std::tuple<int, int, int, int> > >, std::__detail::__is_noexcept_hash<std::tuple<int, int, int, int>, std::hash<std::tuple<int, int, int, int> > > > >'
       equal_range(const key_type& __x) const
       ^~~~~~~~~~~
rect.cpp: In function 'll count_rectangles(std::vector<std::vector<int> >)':
rect.cpp:147:13: error: 'class std::unordered_set<std::tuple<int, int, int, int> >' has no member named 'find'
    if(respf.find({i, j, i2, j2})!=respf.end()) continue;
             ^~~~
rect.cpp:147:41: error: 'class std::unordered_set<std::tuple<int, int, int, int> >' has no member named 'end'
    if(respf.find({i, j, i2, j2})!=respf.end()) continue;
                                         ^~~
rect.cpp:148:55: error: no matching function for call to 'std::unordered_set<std::tuple<int, int, int, int> >::insert(<brace-enclosed initializer list>)'
    if(checa(i, j, i2, j2)) respf.insert({i, j, i2, j2});
                                                       ^
In file included from /usr/include/c++/7/unordered_set:48:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:118,
                 from rect.cpp:2:
/usr/include/c++/7/bits/unordered_set.h:467:2: note: candidate: template<class _InputIterator> void std::unordered_set<_Value, _Hash, _Pred, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; _Value = std::tuple<int, int, int, int>; _Hash = std::hash<std::tuple<int, int, int, int> >; _Pred = std::equal_to<std::tuple<int, int, int, int> >; _Alloc = std::allocator<std::tuple<int, int, int, int> >]
  insert(_InputIterator __first, _InputIterator __last)
  ^~~~~~
/usr/include/c++/7/bits/unordered_set.h:467:2: note:   template argument deduction/substitution failed:
rect.cpp:148:55: note:   candidate expects 2 arguments, 1 provided
    if(checa(i, j, i2, j2)) respf.insert({i, j, i2, j2});
                                                       ^
rect.cpp:152:15: error: 'class std::unordered_set<std::tuple<int, int, int, int> >' has no member named 'size'
  return respf.size();
               ^~~~