Submission #1021588

# Submission time Handle Problem Language Result Execution time Memory
1021588 2024-07-12T20:47:11 Z Ahmed_Solyman Counting Mushrooms (IOI20_mushrooms) C++14
Compilation error
0 ms 0 KB
/*
In the name of Allah
made by: Ahmed_Solyman
*/
#include <bits/stdc++.h>
 
using namespace std;
typedef long long ll;
 
int use_machine(vector<int>x);
int count_mushrooms(int n){
    if(n<=226){
        int ret=1;
        for(int i=1;i<n;i++){
            ret+=1-use_machine({0,i});
        }
        return ret;
    }
    int ret=0,k=73;
    vector<int>v[2];
    v[0].push_back(0);
    for(int i=1;i<=2;i++){
        if(use_machine({0,i})==0)v[0].push_back(i);
        else v[1].push_back(i);
    }
    bool typ;
    int x,y;
    if(v[0].size()>=2){
        typ=0;
        x=v[0][0];y=v[0][1];
    }
    else{
        typ=1;
        x=v[1][0];y=v[1][1];
    }
    for(int i=3;i<=2*k-2;i+=2){
        int h=use_machine({x,i,y,i+1});
        if(h==0){
            v[typ].push_back(i);
            v[typ].push_back(i+1);
        }
        if(h==1){
            v[typ^1].push_back(i);
            v[typ].push_back(i+1);
        }
        if(h==2){
            v[typ].push_back(i);
            v[typ^1].push_back(i+1);
        }
        if(h==3){
            v[typ^1].push_back(i);
            v[typ^1].push_back(i+1);
        }
    }
    auto f=[&](int l,int r){
        vector<int>p;
        vector<int>&g;
        if(v[0].size()>v[1].size())g=v[0],typ=0;
        else g=v[1],typ=1;
        for(int i=l;i<=r;i++){
            p.push_back(i);
            p.push_back(g[i-l]);
        }
        int u=use_machine(p);
        if(g&1)v[typ^2].push_back(l);
        else v[typ].push_back(l);
        u=(u+1)/2;
        if(typ)return u;
        else return r-l+1-u;
    };
    ret=(int)v[0].size();
    for(int i=2*k-1;i<n;i+=k){
        ret+=f(i,min(i+k-1,n-1));
    }
    return ret;
}

Compilation message

mushrooms.cpp: In lambda function:
mushrooms.cpp:57:21: error: 'g' declared as reference but not initialized
   57 |         vector<int>&g;
      |                     ^
mushrooms.cpp:65:13: error: no match for 'operator&' (operand types are 'std::vector<int>' and 'int')
   65 |         if(g&1)v[typ^2].push_back(l);
      |            ~^~
      |            | |
      |            | int
      |            std::vector<int>
In file included from /usr/include/c++/10/ios:42,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from mushrooms.cpp:5:
/usr/include/c++/10/bits/ios_base.h:83:3: note: candidate: 'constexpr std::_Ios_Fmtflags std::operator&(std::_Ios_Fmtflags, std::_Ios_Fmtflags)'
   83 |   operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
      |   ^~~~~~~~
/usr/include/c++/10/bits/ios_base.h:83:27: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::_Ios_Fmtflags'
   83 |   operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
      |             ~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/ios_base.h:125:3: note: candidate: 'constexpr std::_Ios_Openmode std::operator&(std::_Ios_Openmode, std::_Ios_Openmode)'
  125 |   operator&(_Ios_Openmode __a, _Ios_Openmode __b)
      |   ^~~~~~~~
/usr/include/c++/10/bits/ios_base.h:125:27: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::_Ios_Openmode'
  125 |   operator&(_Ios_Openmode __a, _Ios_Openmode __b)
      |             ~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/ios_base.h:165:3: note: candidate: 'constexpr std::_Ios_Iostate std::operator&(std::_Ios_Iostate, std::_Ios_Iostate)'
  165 |   operator&(_Ios_Iostate __a, _Ios_Iostate __b)
      |   ^~~~~~~~
/usr/include/c++/10/bits/ios_base.h:165:26: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::_Ios_Iostate'
  165 |   operator&(_Ios_Iostate __a, _Ios_Iostate __b)
      |             ~~~~~~~~~~~~~^~~
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:66,
                 from mushrooms.cpp:5:
/usr/include/c++/10/bitset:1435:5: note: candidate: 'template<long unsigned int _Nb> std::bitset<_Nb> std::operator&(const std::bitset<_Nb>&, const std::bitset<_Nb>&)'
 1435 |     operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT
      |     ^~~~~~~~
/usr/include/c++/10/bitset:1435:5: note:   template argument deduction/substitution failed:
mushrooms.cpp:65:14: note:   'std::vector<int>' is not derived from 'const std::bitset<_Nb>'
   65 |         if(g&1)v[typ^2].push_back(l);
      |              ^
In file included from /usr/include/c++/10/bits/shared_ptr_atomic.h:33,
                 from /usr/include/c++/10/memory:85,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:82,
                 from mushrooms.cpp:5:
/usr/include/c++/10/bits/atomic_base.h:100:3: note: candidate: 'constexpr std::memory_order std::operator&(std::memory_order, std::__memory_order_modifier)'
  100 |   operator&(memory_order __m, __memory_order_modifier __mod)
      |   ^~~~~~~~
/usr/include/c++/10/bits/atomic_base.h:100:26: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::memory_order'
  100 |   operator&(memory_order __m, __memory_order_modifier __mod)
      |             ~~~~~~~~~~~~~^~~
In file included from /usr/include/c++/10/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from mushrooms.cpp:5:
/usr/include/c++/10/bits/valarray_after.h:411:5: note: candidate: 'template<class _Dom1, class _Dom2> std::_Expr<std::__detail::_BinClos<std::__bitwise_and, std::_Expr, std::_Expr, _Dom1, _Dom2>, typename std::__fun<std::__bitwise_and, typename _Dom1::value_type>::result_type> std::operator&(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::_Expr<_Dom2, typename _Dom2::value_type>&)'
  411 |     _DEFINE_EXPR_BINARY_OPERATOR(&, __bitwise_and)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/valarray_after.h:411:5: note:   template argument deduction/substitution failed:
mushrooms.cpp:65:14: note:   'std::vector<int>' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
   65 |         if(g&1)v[typ^2].push_back(l);
      |              ^
In file included from /usr/include/c++/10/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from mushrooms.cpp:5:
/usr/include/c++/10/bits/valarray_after.h:411:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__bitwise_and, std::_Expr, std::_Constant, _Dom, typename _Dom::value_type>, typename std::__fun<std::__bitwise_and, typename _Dom1::value_type>::result_type> std::operator&(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const typename _Dom::value_type&)'
  411 |     _DEFINE_EXPR_BINARY_OPERATOR(&, __bitwise_and)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/valarray_after.h:411:5: note:   template argument deduction/substitution failed:
mushrooms.cpp:65:14: note:   'std::vector<int>' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
   65 |         if(g&1)v[typ^2].push_back(l);
      |              ^
In file included from /usr/include/c++/10/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from mushrooms.cpp:5:
/usr/include/c++/10/bits/valarray_after.h:411:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__bitwise_and, std::_Constant, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__bitwise_and, typename _Dom1::value_type>::result_type> std::operator&(const typename _Dom::value_type&, const std::_Expr<_Dom1, typename _Dom1::value_type>&)'
  411 |     _DEFINE_EXPR_BINARY_OPERATOR(&, __bitwise_and)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/valarray_after.h:411:5: note:   template argument deduction/substitution failed:
mushrooms.cpp:65:14: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'int'
   65 |         if(g&1)v[typ^2].push_back(l);
      |              ^
In file included from /usr/include/c++/10/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from mushrooms.cpp:5:
/usr/include/c++/10/bits/valarray_after.h:411:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__bitwise_and, std::_Expr, std::_ValArray, _Dom, typename _Dom::value_type>, typename std::__fun<std::__bitwise_and, typename _Dom1::value_type>::result_type> std::operator&(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::valarray<typename _Dom::value_type>&)'
  411 |     _DEFINE_EXPR_BINARY_OPERATOR(&, __bitwise_and)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/valarray_after.h:411:5: note:   template argument deduction/substitution failed:
mushrooms.cpp:65:14: note:   'std::vector<int>' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
   65 |         if(g&1)v[typ^2].push_back(l);
      |              ^
In file included from /usr/include/c++/10/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from mushrooms.cpp:5:
/usr/include/c++/10/bits/valarray_after.h:411:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__bitwise_and, std::_ValArray, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__bitwise_and, typename _Dom1::value_type>::result_type> std::operator&(const std::valarray<typename _Dom::value_type>&, const std::_Expr<_Dom1, typename _Dom1::value_type>&)'
  411 |     _DEFINE_EXPR_BINARY_OPERATOR(&, __bitwise_and)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/valarray_after.h:411:5: note:   template argument deduction/substitution failed:
mushrooms.cpp:65:14: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'int'
   65 |         if(g&1)v[typ^2].push_back(l);
      |              ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from mushrooms.cpp:5:
/usr/include/c++/10/valarray:1191:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__bitwise_and, std::_ValArray, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__bitwise_and, _Tp>::result_type> std::operator&(const std::valarray<_Tp>&, const std::valarray<_Tp>&)'
 1191 | _DEFINE_BINARY_OPERATOR(&, __bitwise_and)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/valarray:1191:1: note:   template argument deduction/substitution failed:
mushrooms.cpp:65:14: note:   'std::vector<int>' is not derived from 'const std::valarray<_Tp>'
   65 |         if(g&1)v[typ^2].push_back(l);
      |              ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from mushrooms.cpp:5:
/usr/include/c++/10/valarray:1191:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__bitwise_and, std::_ValArray, std::_Constant, _Tp, _Tp>, typename std::__fun<std::__bitwise_and, _Tp>::result_type> std::operator&(const std::valarray<_Tp>&, const typename std::valarray<_Tp>::value_type&)'
 1191 | _DEFINE_BINARY_OPERATOR(&, __bitwise_and)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/valarray:1191:1: note:   template argument deduction/substitution failed:
mushrooms.cpp:65:14: note:   'std::vector<int>' is not derived from 'const std::valarray<_Tp>'
   65 |         if(g&1)v[typ^2].push_back(l);
      |              ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from mushrooms.cpp:5:
/usr/include/c++/10/valarray:1191:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__bitwise_and, std::_Constant, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__bitwise_and, _Tp>::result_type> std::operator&(const typename std::valarray<_Tp>::value_type&, const std::valarray<_Tp>&)'
 1191 | _DEFINE_BINARY_OPERATOR(&, __bitwise_and)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/valarray:1191:1: note:   template argument deduction/substitution failed:
mushrooms.cpp:65:14: note:   mismatched types 'const std::valarray<_Tp>' and 'int'
   65 |         if(g&1)v[typ^2].push_back(l);
      |              ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:105,
                 from mushrooms.cpp:5:
/usr/include/c++/10/future:143:20: note: candidate: 'constexpr std::launch std::operator&(std::launch, std::launch)'
  143 |   constexpr launch operator&(launch __x, launch __y)
      |                    ^~~~~~~~
/usr/include/c++/10/future:143:37: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::launch'
  143 |   constexpr launch operator&(launch __x, launch __y)
      |                              ~~~~~~~^~~