제출 #1331579

#제출 시각아이디문제언어결과실행 시간메모리
1331579huutuanHow to Avoid Disqualification in 75 Easy Steps (CEOI23_avoid)C++20
컴파일 에러
0 ms0 KiB
#include "avoid.h"

#include <bits/stdc++.h>

using namespace std;

pair<int, int> scout(int R, int H){
   if (R==10 && H==1){
      for (int i=0; i<10; ++i){
         vector<int> vv;
         for (int j=1; j<=1000; ++j) if (j>>i&1) vv.push_back(j);
         send(vv);
      }
      auto v=wait();
      int ans=0;
      for (int i=0; i<10; ++i) ans|=v[i]<<i;
      return {ans, ans};
   }
   if (R==20 && H==20){
      int l=1, r=1000;
      while (l<=r){
         int mid=(l+r)>>1;
         vector<int> vv(mid-l+1);
         iota(vv.begin(), vv.end(), l);
         send(vv);
         auto v=wait();
         if (v[0]) r=mid-1;
         else l=mid+1;
      }
      pair<int, int> ans={-1, -1};
      ans.first=l;
      l=ans.first+1, r=1000;
      while (l<=r){
         int mid=(l+r)>>1;
         vector<int> vv(mid-l+1);
         iota(vv.begin(), vv.end(), l);
         send(vv);
         auto v=wait();
         if (v[0]) r=mid-1;
         else l=mid+1;
      }
      ans.second=l;
      if (ans.second==1001) ans.second=ans.first;
      return ans;
   }
   if (R==30 && H==2){
      for (int i=0; i<10; ++i){
         vector<int> v0, v1;
         for (int j=1; j<=1000; ++j){
            if (j>>i&1) v1.push_back(j);
            else v0.push_back(j);
         }
         send(v0); send(v1);
      }
      auto v=wait();
      int msk=0, msk2=0;
      vector<int> bits;
      for (int i=0; i<10; ++i){
         if (v[i<<1]!=v[i<<1|1]) msk|=v[i<<1|1]<<i;
         else bits.push_back(i), msk2|=1<<i;
      }
      msk2|=msk;
      if (bits.empty()) return {msk, msk};
      else if ((int)bits.size()==1){
         return {msk, msk|(1<<bits[0])};
      }else{
         pair<int, int> ans={msk, msk|(1<<bits[0])};
         for (int i=1; i<(int)bits.size(); ++i){
            vector<int> vv;
            for (int j=1; j<=1000; ++j) if ((j&msk)==msk && (j&msk2)==j){
               if ((j>>bits[i]&1)==0 && (j>>bits[0]&1)==0) vv.push_back(j);
            }
            send(vv);
         }
         v=wait();
         for (int i=1; i<(int)bits.size(); ++i){
            if (v[i-1]){
               ans.second|=1<<bits[i];
            }else{
               ans.first|=1<<bits[i];
            }
         }
         return ans;
      }
   }
   for (int i=0; i<10; ++i){
      vector<int> v0, v1;
      for (int j=1; j<=1000; ++j){
         if (j>>i&1) v1.push_back(j);
         else v0.push_back(j);
      }
      send(v0); send(v1);
   }
   vector<pair<int, int>> pb;
   for (int b1=0; b1<10; ++b1){
      for (int b2=b1+1; b2<10; ++b2){
         pb.emplace_back(b1, b2);
      }
      vector<int> vv;
      for (int j=1; j<=1000; ++j){
         if ((j>>b1&1)==0 && (j>>b2&1)==0) vv.push_back(j);
      }
      send(vv);
   }
   auto v=wait();
   int msk=0;
   vector<int> bits;
   for (int i=0; i<10; ++i){
      if (v[i<<1]!=v[i<<1|1]) msk|=v[i<<1|1]<<i;
      else bits.push_back(i);
   }
   if (bits.empty()) return {msk, msk};
   else if ((int)bits.size()==1){
      return {msk, msk|(1<<bits[0])};
   }else{
      pair<int, int> ans={msk, msk|(1<<bits[0])};
      v=wait();
      for (int i=1; i<(int)bits.size(); ++i){
         if (v[10+find(pb.begin(), pb.end(), {bits[0], bits[i]})-pb.begin()]){
            ans.second|=1<<bits[i];
         }else{
            ans.first|=1<<bits[i];
         }
      }
      return ans;
   }
}

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

avoid.cpp: In function 'std::pair<int, int> scout(int, int)':
avoid.cpp:101:34: error: 'b2' was not declared in this scope; did you mean 'b1'?
  101 |          if ((j>>b1&1)==0 && (j>>b2&1)==0) vv.push_back(j);
      |                                  ^~
      |                                  b1
avoid.cpp:119:23: error: no matching function for call to 'find(std::vector<std::pair<int, int> >::iterator, std::vector<std::pair<int, int> >::iterator, <brace-enclosed initializer list>)'
  119 |          if (v[10+find(pb.begin(), pb.end(), {bits[0], bits[i]})-pb.begin()]){
      |                   ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from avoid.cpp:3:
/usr/include/c++/13/bits/stl_algo.h:3889:5: note: candidate: 'template<class _IIter, class _Tp> constexpr _IIter std::find(_IIter, _IIter, const _Tp&)'
 3889 |     find(_InputIterator __first, _InputIterator __last,
      |     ^~~~
/usr/include/c++/13/bits/stl_algo.h:3889:5: note:   template argument deduction/substitution failed:
avoid.cpp:119:23: note:   couldn't deduce template parameter '_Tp'
  119 |          if (v[10+find(pb.begin(), pb.end(), {bits[0], bits[i]})-pb.begin()]){
      |                   ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:73:
/usr/include/c++/13/pstl/glue_algorithm_defs.h:60:1: note: candidate: 'template<class _ExecutionPolicy, class _ForwardIterator, class _Tp> __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> std::find(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, const _Tp&)'
   60 | find(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value);
      | ^~~~
/usr/include/c++/13/pstl/glue_algorithm_defs.h:60:1: note:   template argument deduction/substitution failed:
avoid.cpp:119:23: note:   candidate expects 4 arguments, 3 provided
  119 |          if (v[10+find(pb.begin(), pb.end(), {bits[0], bits[i]})-pb.begin()]){
      |                   ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/iterator:66,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:54:
/usr/include/c++/13/bits/streambuf_iterator.h:435:5: note: candidate: 'template<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT, std::char_traits<_CharT> > >::__type std::find(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, const _CharT2&)'
  435 |     find(istreambuf_iterator<_CharT> __first,
      |     ^~~~
/usr/include/c++/13/bits/streambuf_iterator.h:435:5: note:   template argument deduction/substitution failed:
avoid.cpp:119:23: note:   '__gnu_cxx::__normal_iterator<std::pair<int, int>*, std::vector<std::pair<int, int> > >' is not derived from 'std::istreambuf_iterator<_CharT, std::char_traits<_CharT> >'
  119 |          if (v[10+find(pb.begin(), pb.end(), {bits[0], bits[i]})-pb.begin()]){
      |                   ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~