제출 #815199

#제출 시각아이디문제언어결과실행 시간메모리
815199JakobZorzRarest Insects (IOI22_insects)C++17
컴파일 에러
0 ms0 KiB
#include"insects.h" #include<iostream> #include<vector> #include<set> using namespace std; set<int>inside; int n,distinct; int low_bound,high_bound; int c_press_button(){ return press_button(); } void c_move_inside(int a){ inside.insert(a); move_inside(a); } void c_move_outside(int a){ inside.erase(a); move_outside(a); } void check(int c){ for(int i=0;i<n;i++){ c_move_inside(i); if(c_press_button()>c) c_move_outside(i); } bool res=inside.size()==c*distinct; if(res){ low_bound=max(low_bound,c); high_bound=min(high_bound,c+(n-c*distinct)/distinct+1); }else{ low_bound=max(low_bound,c-(c*distinct-inside.size())); high_bound=min(high_bound,c); } vector<int>inside_vec={inside.begin(),inside.end()}; for(int i:inside_vec) c_move_outside(i); } int get_distinct(){ for(int i=0;i<n;i++){ c_move_inside(i); if(c_press_button()>1) c_move_outside(i); } int res=inside.size(); vector<int>inside_vec={inside.begin(),inside.end()}; for(int i:inside_vec) c_move_outside(i); return res; } int min_cardinality(int N){ n=N; distinct=get_distinct(); if(distinct>n/2) return 1; if(distinct==1) return n; low_bound=1; high_bound=n/distinct+1; while(low_bound<high_bound-1){ int m=(low_bound+high_bound)/2; check(m); } return low_bound; }

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

insects.cpp: In function 'void check(int)':
insects.cpp:32:27: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   32 |     bool res=inside.size()==c*distinct;
      |              ~~~~~~~~~~~~~^~~~~~~~~~~~
insects.cpp:38:61: error: no matching function for call to 'max(int&, std::set<int>::size_type)'
   38 |         low_bound=max(low_bound,c-(c*distinct-inside.size()));
      |                                                             ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/ostream:38,
                 from /usr/include/c++/10/iostream:39,
                 from insects.cpp:2:
/usr/include/c++/10/bits/stl_algobase.h:254:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  254 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:254:5: note:   template argument deduction/substitution failed:
insects.cpp:38:61: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'std::set<int>::size_type' {aka 'long unsigned int'})
   38 |         low_bound=max(low_bound,c-(c*distinct-inside.size()));
      |                                                             ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/ostream:38,
                 from /usr/include/c++/10/iostream:39,
                 from insects.cpp:2:
/usr/include/c++/10/bits/stl_algobase.h:300:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  300 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:300:5: note:   template argument deduction/substitution failed:
insects.cpp:38:61: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'std::set<int>::size_type' {aka 'long unsigned int'})
   38 |         low_bound=max(low_bound,c-(c*distinct-inside.size()));
      |                                                             ^