Language: C++

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int MOD=1000000007;

ll dip(ll x){
  ll a=1,b=2;
  while(x){
    if(x%2){
      a*=b;
    }
    x/=2;
    a%=MOD;
    b%=MOD;
  }
  return a;
}

int main(){
  map<ll,pair<int,int>> X;
  map<ll,ll> M;
  ll N,k=0,a,it=0;
  cin>>N;
  for(int i=0;i<N;i++){
    cin>>a;
    k=k^a;
    if(k==0)
      it++;
    else{
      X.try_emplace(k,{1,0});
      M.try_emplace(k,it);
      if(M.at(k)!=it){
        X.at(k).second+=(it-M.at(k))*X.at(k).first%MOD;
        M.at(k)=it;
      }
      X.at(k).first+=X.at(k).second+1;
      X.at(k).first%=MOD;
    }
  }
  auto itX=X.begin();
  auto itM=M.begin();
  ll cnt=0;
  if(k==0){
    while(itX!=X.end()){
      cnt+=*X.second+(it-*M)*(*X).first%MOD;
    }
    cnt+=dip(it);
  }else{
    cnt=X.at(k).first;
  }
  cnt%=MOD;
  cout<<cnt<<endl;
}

Compiler output:
a.cc: In function 'int main()':
a.cc:30:20: error: no matching function for call to 'std::map<long long int, std::pair<int, int> >::try_emplace(long long int&, <brace-enclosed initializer list>)'
   30 |       X.try_emplace(k,{1,0});
      |       ~~~~~~~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/14/map:63,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:152,
                 from a.cc:1:
/usr/include/c++/14/bits/stl_map.h:722:9: note: candidate: 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Val>, std::_Select1st<std::pair<const _Key, _Val> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Val> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::try_emplace(const key_type&, _Args&& ...) [with _Args = {}; _Key = long long int; _Tp = std::pair<int, int>; _Compare = std::less<long long int>; _Alloc = std::allocator<std::pair<const long long int, std::pair<int, int> > >; typename std::_Rb_tree<_Key, std::pair<const _Key, _Val>, std::_Select1st<std::pair<const _Key, _Val> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Val> >::other>::iterator = std::_Rb_tree<long long int, std::pair<const long long int, std::pair<int, int> >, std::_Select1st<std::pair<const long long int, std::pair<int, int> > >, std::less<long long int>, std::allocator<std::pair<const long long int, std::pair<int, int> > > >::iterator; typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Val> >::other = std::allocator<std::pair<const long long int, std::pair<int, int> > >; typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Val> > = __gnu_cxx::__alloc_traits<std::allocator<std::pair<const long long int, std::pair<int, int> > >, std::pair<const long long int, std::pair<int, int> > >::rebind<std::pair<const long long int, std::pair<int, int> > >; typename _Allocator::value_type = std::pair<const long long int, std::pair<int, int> >; key_type = long long int]'
  722 |         try_emplace(const key_type& __k, _Args&&... __args)
      |         ^~~~~~~~~~~
/usr/include/c++/14/bits/stl_map.h:722:9: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_map.h:739:9: note: candidate: 'template<class ... _Args> std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Val>, std::_Select1st<std::pair<const _Key, _Val> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Val> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::try_emplace(key_type&&, _Args&& ...) [with _Args = {_Args ...}; _Key = long long int; _Tp = std::pair<int, int>; _Compare = std::less<long long int>; _Alloc = std::allocator<std::pair<const long long int, std::pair<int, int> > >]'
  739 |         try_emplace(key_type&& __k, _Args&&... __args)
      |         ^~~~~~~~~~~
/usr/include/c++/14/bits/stl_map.h:739:9: note:   template argument deduction/substitution failed:
a.cc:30:21: note:   cannot convert 'k' (type 'long long int') to type 'std::map<long long int, std::pair<int, int> >::key_type&&' {aka 'long long int&&'}
   30 |       X.try_emplace(k,{1,0});
      |                     ^
/usr/include/c++/14/bits/stl_map.h:782:9: note: candidate: 'template<class ... _Args> std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::try_emplace(const_iterator, const key_type&, _Args&& ...) [with _Args = {_Args ...}; _Key = long long int; _Tp = std::pair<int, int>; _Compare = std::less<long long int>; _Alloc = std::allocator<std::pair<const long long int, std::pair<int, int> > >]'
  782 |         try_emplace(const_iterator __hint, const key_type& __k,
      |         ^~~~~~~~~~~
/usr/include/c++/14/bits/stl_map.h:782:9: note:   template argument deduction/substitution failed:
a.cc:30:20: note:   cannot convert '{1, 0}' (type '<brace-enclosed initializer list>') to type 'const std::map<long long int, std::pair<int, int> >::key_type&' {aka 'const long long int&'}
   30 |       X.try_emplace(k,{1,0});
      |       ~~~~~~~~~~~~~^~~~~~~~~
/usr/include/c++/14/bits/stl_map.h:801:9: note: candidate: 'template<class ... _Args> std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::try_emplace(const_iterator, key_type&&, _Args&& ...) [with _Args = {_Args ...}; _Key = long long int; _Tp = std::pair<int, int>; _Compare = std::less<long long int>; _Alloc = std::allocator<std::pair<const long long int, std::pair<int, int> > >]'
  801 |         try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args)
      |         ^~~~~~~~~~~
/usr/include/c++/14/bits/stl_map.h:801:9: note:   template argument deduction/substitution failed:
a.cc:30:20: note:   cannot convert '{1, 0}' (type '<brace-enclosed initializer list>') to type 'std::map<long long int, std::pair<int, int> >::key_type&&' {aka 'long long int&&'}
   30 |       X.try_emplace(k,{1,0});
      |       ~~~~~~~~~~~~~^~~~~~~~~
a.cc:45:15: error: 'class std::map<long long int, std::pair<int, int> >' has no member named 'second'
   45 |       cnt+=*X.second+(it-*M)*(*X).first%MOD;
      |               ^~~~~~
a.cc:45:26: error: no match for 'operator*' (operand type is 'std::map<long long int, long long int>')
   45 |       cnt+=*X.second+(it-*M)*(*X).first%MOD;
      |                          ^~
In file included from /usr/include/c++/14/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:127:
/usr/include/c++/14/complex:400:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::operator*(const complex<_Tp>&, const complex<_Tp>&)'
  400 |     operator*(const complex<_Tp>& __x, const complex<_Tp>& __y)
      |     ^~~~~~~~
/usr/include/c++/14/complex:400:5: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/14/complex:409:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::operator*(const complex<_Tp>&, const _Tp&)'
  409 |     operator*(const complex<_Tp>& __x, const _Tp& __y)
      |     ^~~~~~~~
/usr/include/c++/14/complex:409:5: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/14/complex:418:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::operator*(const _Tp&, const complex<_Tp>&)'
  418 |     operator*(const _Tp& __x, const complex<_Tp>& __y)
      |     ^~~~~~~~
/usr/include/c++/14/complex:418:5: note:   candidate expects 2 arguments, 1 provided
In file included from /usr/include/c++/14/valarray:605,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:166:
/usr/include/c++/14/bits/valarray_after.h:407:5: note: candidate: 'template<class _Dom1, class _Dom2> std::_Expr<std::__detail::_BinClos<std::__multiplies, std::_Expr, std::_Expr, _Dom1, _Dom2>, typename std::__fun<std::__multiplies, typename _Dom1::value_type>::result_type> std::operator*(const _Expr<_Dom1, typename _Dom1::value_type>&, const _Expr<_Dom2, typename _Dom2::value_type>&)'
  407 |     _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:407:5: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/14/bits/valarray_after.h:407:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__multiplies, std::_Expr, std::_Constant, _Dom, typename _Dom::value_type>, typename std::__fun<std::__multiplies, typename _Dom1::value_type>::result_type> std::operator*(const _Expr<_Dom1, typename _Dom1::value_type>&, const typename _Dom::value_type&)'
  407 |     _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:407:5: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/14/bits/valarray_after.h:407:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__multiplies, std::_Constant, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__multiplies, typename _Dom1::value_type>::result_type> std::operator*(const typename _Dom::value_type&, const _Expr<_Dom1, typename _Dom1::value_type>&)'
  407 |     _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:407:5: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/14/bits/valarray_after.h:407:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__multiplies, std::_Expr, std::_ValArray, _Dom, typename _Dom::value_type>, typename std::__fun<std::__multiplies, typename _Dom1::value_type>::result_type> std::operator*(const _Expr<_Dom1, typename _Dom1::value_type>&, const valarray<typename _Dom::value_type>&)'
  407 |     _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:407:5: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/14/bits/valarray_after.h:407:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__multiplies, std::_ValArray, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__multiplies, typename _Dom1::value_type>::result_type> std::operator*(const valarray<typename _Dom::value_type>&, const _Expr<_Dom1, typename _Dom1::value_type>&)'
  407 |     _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:407:5: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/14/valarray:1198:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__multiplies, std::_ValArray, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__multiplies, _Tp>::result_type> std::operator*(const valarray<_Tp>&, const valarray<_Tp>&)'
 1198 | _DEFINE_BINARY_OPERATOR(*, __multiplies)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/valarray:1198:1: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/14/valarray:1198:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__multiplies, std::_ValArray, std::_Constant, _Tp, _Tp>, typena