답안 #134057

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
134057 2019-07-22T03:23:39 Z junodeveloper Detecting Molecules (IOI16_molecules) C++14
컴파일 오류
0 ms 0 KB
#include "molecules.h"
#include<bits/stdc++.h>
using namespace std;
std::vector<int> find_subset(int l, int u, std::vector<int> w) {
	int i;
	set<pair<long long,int> > st;
	long long sum=0;
	st.insert({0,0});
	for(i=0;i<w.size();i++) {
		sum+=w[i];
		auto it=st.lower_bound(sum-u);
		if(it!=st.end()) {
			if(it->first<=sum-l) {
				vector<int> ans;
				for(int j=it->second+1;j<=i;j++) ans.push_back(w[j]);
				return ans;
			}
		}
		st.insert({sum,i});
	}
	return vector<int>(0);
}

Compilation message

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:9:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(i=0;i<w.size();i++) {
          ~^~~~~~~~~
molecules.cpp:11:31: error: no matching function for call to 'std::set<std::pair<long long int, int> >::lower_bound(long long int)'
   auto it=st.lower_bound(sum-u);
                               ^
In file included from /usr/include/c++/7/set:61:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:87,
                 from molecules.cpp:2:
/usr/include/c++/7/bits/stl_set.h:800:7: note: candidate: std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::lower_bound(const key_type&) [with _Key = std::pair<long long int, int>; _Compare = std::less<std::pair<long long int, int> >; _Alloc = std::allocator<std::pair<long long int, int> >; std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::pair<long long int, int> >; std::set<_Key, _Compare, _Alloc>::key_type = std::pair<long long int, int>]
       lower_bound(const key_type& __x)
       ^~~~~~~~~~~
/usr/include/c++/7/bits/stl_set.h:800:7: note:   no known conversion for argument 1 from 'long long int' to 'const key_type& {aka const std::pair<long long int, int>&}'
/usr/include/c++/7/bits/stl_set.h:804:7: note: candidate: std::set<_Key, _Compare, _Alloc>::const_iterator std::set<_Key, _Compare, _Alloc>::lower_bound(const key_type&) const [with _Key = std::pair<long long int, int>; _Compare = std::less<std::pair<long long int, int> >; _Alloc = std::allocator<std::pair<long long int, int> >; std::set<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::pair<long long int, int> >; std::set<_Key, _Compare, _Alloc>::key_type = std::pair<long long int, int>]
       lower_bound(const key_type& __x) const
       ^~~~~~~~~~~
/usr/include/c++/7/bits/stl_set.h:804:7: note:   no known conversion for argument 1 from 'long long int' to 'const key_type& {aka const std::pair<long long int, int>&}'
/usr/include/c++/7/bits/stl_set.h:810:2: note: candidate: template<class _Kt> decltype ((std::set<_Key, _Compare, _Alloc>::iterator)(((std::set<_Key, _Compare, _Alloc>*)this)->std::set<_Key, _Compare, _Alloc>::_M_t._M_lower_bound_tr(__x))) std::set<_Key, _Compare, _Alloc>::lower_bound(const _Kt&) [with _Kt = _Kt; _Key = std::pair<long long int, int>; _Compare = std::less<std::pair<long long int, int> >; _Alloc = std::allocator<std::pair<long long int, int> >]
  lower_bound(const _Kt& __x)
  ^~~~~~~~~~~
/usr/include/c++/7/bits/stl_set.h:810:2: note:   template argument deduction/substitution failed:
/usr/include/c++/7/bits/stl_set.h: In substitution of 'template<class _Kt> decltype ((std::set<std::pair<long long int, int> >::iterator)(((std::set<std::pair<long long int, int> >*)this)->std::set<std::pair<long long int, int> >::_M_t.std::_Rb_tree<std::pair<long long int, int>, std::pair<long long int, int>, std::_Identity<std::pair<long long int, int> >, std::less<std::pair<long long int, int> >, std::allocator<std::pair<long long int, int> > >::_M_lower_bound_tr(__x))) std::set<std::pair<long long int, int> >::lower_bound<_Kt>(const _Kt&) [with _Kt = long long int]':
molecules.cpp:11:31:   required from here
/usr/include/c++/7/bits/stl_set.h:811:14: error: no matching function for call to 'std::_Rb_tree<std::pair<long long int, int>, std::pair<long long int, int>, std::_Identity<std::pair<long long int, int> >, std::less<std::pair<long long int, int> >, std::allocator<std::pair<long long int, int> > >::_M_lower_bound_tr(const long long int&)'
  -> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/7/map:60:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:81,
                 from molecules.cpp:2:
/usr/include/c++/7/bits/stl_tree.h:1244:2: note: candidate: template<class _Kt, class _Req> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_lower_bound_tr(const _Kt&) [with _Kt = _Kt; _Req = _Req; _Key = std::pair<long long int, int>; _Val = std::pair<long long int, int>; _KeyOfValue = std::_Identity<std::pair<long long int, int> >; _Compare = std::less<std::pair<long long int, int> >; _Alloc = std::allocator<std::pair<long long int, int> >]
  _M_lower_bound_tr(const _Kt& __k)
  ^~~~~~~~~~~~~~~~~
/usr/include/c++/7/bits/stl_tree.h:1244:2: note:   template argument deduction/substitution failed:
/usr/include/c++/7/bits/stl_tree.h:1241:9: error: no type named 'type' in 'struct std::__has_is_transparent<std::less<std::pair<long long int, int> >, long long int, void>'
         typename _Req =
         ^~~~~~~~
/usr/include/c++/7/bits/stl_tree.h:1254:2: note: candidate: template<class _Kt, class _Req> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_lower_bound_tr(const _Kt&) const [with _Kt = _Kt; _Req = _Req; _Key = std::pair<long long int, int>; _Val = std::pair<long long int, int>; _KeyOfValue = std::_Identity<std::pair<long long int, int> >; _Compare = std::less<std::pair<long long int, int> >; _Alloc = std::allocator<std::pair<long long int, int> >]
  _M_lower_bound_tr(const _Kt& __k) const
  ^~~~~~~~~~~~~~~~~
/usr/include/c++/7/bits/stl_tree.h:1254:2: note:   template argument deduction/substitution failed:
/usr/include/c++/7/bits/stl_tree.h:1251:9: error: no type named 'type' in 'struct std::__has_is_transparent<std::less<std::pair<long long int, int> >, long long int, void>'
         typename _Req =
         ^~~~~~~~
In file included from /usr/include/c++/7/set:61:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:87,
                 from molecules.cpp:2:
/usr/include/c++/7/bits/stl_set.h:816:2: note: candidate: template<class _Kt> decltype ((std::set<_Key, _Compare, _Alloc>::const_iterator)(((const std::set<_Key, _Compare, _Alloc>*)this)->std::set<_Key, _Compare, _Alloc>::_M_t._M_lower_bound_tr(__x))) std::set<_Key, _Compare, _Alloc>::lower_bound(const _Kt&) const [with _Kt = _Kt; _Key = std::pair<long long int, int>; _Compare = std::less<std::pair<long long int, int> >; _Alloc = std::allocator<std::pair<long long int, int> >]
  lower_bound(const _Kt& __x) const
  ^~~~~~~~~~~
/usr/include/c++/7/bits/stl_set.h:816:2: note:   template argument deduction/substitution failed:
/usr/include/c++/7/bits/stl_set.h: In substitution of 'template<class _Kt> decltype ((std::set<std::pair<long long int, int> >::const_iterator)(((const std::set<std::pair<long long int, int> >*)this)->std::set<std::pair<long long int, int> >::_M_t.std::_Rb_tree<std::pair<long long int, int>, std::pair<long long int, int>, std::_Identity<std::pair<long long int, int> >, std::less<std::pair<long long int, int> >, std::allocator<std::pair<long long int, int> > >::_M_lower_bound_tr(__x))) std::set<std::pair<long long int, int> >::lower_bound<_Kt>(const _Kt&) const [with _Kt = long long int]':
molecules.cpp:11:31:   required from here
/usr/include/c++/7/bits/stl_set.h:817:14: error: no matching function for call to 'std::_Rb_tree<std::pair<long long int, int>, std::pair<long long int, int>, std::_Identity<std::pair<long long int, int> >, std::less<std::pair<long long int, int> >, std::allocator<std::pair<long long int, int> > >::_M_lower_bound_tr(const long long int&) const'
  -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/7/map:60:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:81,
                 from molecules.cpp:2:
/usr/include/c++/7/bits/stl_tree.h:1244:2: note: candidate: template<class _Kt, class _Req> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_lower_bound_tr(const _Kt&) [with _Kt = _Kt; _Req = _Req; _Key = std::pair<long long int, int>; _Val = std::pair<long long int, int>; _KeyOfValue = std::_Identity<std::pair<long long int, int> >; _Compare = std::less<std::pair<long long int, int> >; _Alloc = std::allocator<std::pair<long long int, int> >]
  _M_lower_bound_tr(const _Kt& __k)
  ^~~~~~~~~~~~~~~~~
/usr/include/c++/7/bits/stl_tree.h:1244:2: note:   template argument deduction/substitution failed:
/usr/include/c++/7/bits/stl_tree.h:1241:9: error: no type named 'type' in 'struct std::__has_is_transparent<std::less<std::pair<long long int, int> >, long long int, void>'
         typename _Req =
         ^~~~~~~~
/usr/include/c++/7/bits/stl_tree.h:1254:2: note: candidate: template<class _Kt, class _Req> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_lower_bound_tr(const _Kt&) const [with _Kt = _Kt; _Req = _Req; _Key = std::pair<long long int, int>; _Val = std::pair<long long int, int>; _KeyOfValue = std::_Identity<std::pair<long long int, int> >; _Compare = std::less<std::pair<long long int, int> >; _Alloc = std::allocator<std::pair<long long int, int> >]
  _M_lower_bound_tr(const _Kt& __k) const
  ^~~~~~~~~~~~~~~~~
/usr/include/c++/7/bits/stl_tree.h:1254:2: note:   template argument deduction/substitution failed:
/usr/include/c++/7/bits/stl_tree.h:1251:9: error: no type named 'type' in 'struct std::__has_is_transparent<std::less<std::pair<long long int, int> >, long long int, void>'
         typename _Req =
         ^~~~~~~~