Language: C++

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

int main(){
  ll A,B;
  cin>>A>>B;
  vector<ll> a(64),b(64),c(64);
  for(int i=0;i<64;i++){
    a.at(i)=A%2;
    b.at(i)=B%2;
    A/=2;
    B/=2;
  }

  ll res=1;
  ll ans=0;
  int n=b.size();
  for(int i=0;i<n;i++){
    vector<vector<vector<ll>>> dp(n,vector<vector<ll>>(2,vector<ll>(2,0)));
    dp.at(0).at(0).at(0)=a.at(n-i-1);
    dp.at(0).at(1).at(0)=1-a.at(n-i-1);
    dp.at(0).at(0).at(1)=1-a.at(n-i-1);
    for(int j=1;j<n;j++){
      if(i+j==n-1){
        dp.at(j).at(1).at(1)+=dp.at(j-1).at(1).at(1)+(1-a.at(n-j-1))*dp.at(j-1).at(1).at(0);
        dp.at(j).at(1).at(0)+=a.at(n-j-1)*dp.at(j-1).at(1).at(0);
        dp.at(j).at(0).at(1)+=b.at(n-j-1)*dp.at(j-1).at(0).at(1)+max(0,b.at(n-j-1)-a.at(n-j-1))*dp.at(j-1).at(0).at(0);
        dp.at(j).at(0).at(0)+=a.at(n-j-1)*b.at(n-j-1)*dp.at(j-1).at(0).at(0);
        continue;
      }
      dp.at(j).at(0).at(1)+=dp.at(j-1).at(0).at(1)+max(b.at(n-j-1)-a.at(n-j-1),0)*dp.at(j-1).at(0).at(0);
      dp.at(j).at(1).at(0)+=dp.at(j-1).at(1).at(0)+max(0,b.at(n-j-1)-a.at(n-j-1))*dp.at(j-1).at(0).at(0);
      dp.at(j).at(1).at(1)+=2*dp.at(j-1).at(1).at(1)+(1-a.at(n-j-1))*dp.at(j-1).at(1).at(0)+b.at(n-j-1)*dp.at(j-1).at(0).at(1);
      dp.at(j).at(0).at(0)+=((a.at(n-j-1)+b.at(n-j-1)+1)%2)*dp.at(j-1).at(0).at(0);
    }
    if((dp.at(63).at(0).at(0)+dp.at(63).at(1).at(0)+dp.at(63).at(0).at(1)+dp.at(63).at(1).at(1))%2==1){
      ans+=res;
    }
    res*=2;
  }
  cout<<ans<<endl;
}


Compiler output:
a.cc: In function 'int main()':
a.cc:30:69: error: no matching function for call to 'max(int, __gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type)'
   30 |         dp.at(j).at(0).at(1)+=b.at(n-j-1)*dp.at(j-1).at(0).at(1)+max(0,b.at(n-j-1)-a.at(n-j-1))*dp.at(j-1).at(0).at(0);
      |                                                                  ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14/algorithm:60,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:51,
                 from a.cc:1:
/usr/include/c++/14/bits/stl_algobase.h:257:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  257 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:257:5: note:   template argument deduction/substitution failed:
a.cc:30:69: note:   deduced conflicting types for parameter 'const _Tp' ('int' and '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'})
   30 |         dp.at(j).at(0).at(1)+=b.at(n-j-1)*dp.at(j-1).at(0).at(1)+max(0,b.at(n-j-1)-a.at(n-j-1))*dp.at(j-1).at(0).at(0);
      |                                                                  ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_algobase.h:303:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  303 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:303:5: note:   candidate expects 3 arguments, 2 provided
In file included from /usr/include/c++/14/algorithm:61:
/usr/include/c++/14/bits/stl_algo.h:5706:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(initializer_list<_Tp>)'
 5706 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5706:5: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_algo.h:5716:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(initializer_list<_Tp>, _Compare)'
 5716 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5716:5: note:   template argument deduction/substitution failed:
a.cc:30:69: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   30 |         dp.at(j).at(0).at(1)+=b.at(n-j-1)*dp.at(j-1).at(0).at(1)+max(0,b.at(n-j-1)-a.at(n-j-1))*dp.at(j-1).at(0).at(0);
      |                                                                  ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
a.cc:34:55: error: no matching function for call to 'max(__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type, int)'
   34 |       dp.at(j).at(0).at(1)+=dp.at(j-1).at(0).at(1)+max(b.at(n-j-1)-a.at(n-j-1),0)*dp.at(j-1).at(0).at(0);
      |                                                    ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_algobase.h:257:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  257 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:257:5: note:   template argument deduction/substitution failed:
a.cc:34:55: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   34 |       dp.at(j).at(0).at(1)+=dp.at(j-1).at(0).at(1)+max(b.at(n-j-1)-a.at(n-j-1),0)*dp.at(j-1).at(0).at(0);
      |                                                    ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_algobase.h:303:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  303 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:303:5: note:   candidate expects 3 arguments, 2 provided
/usr/include/c++/14/bits/stl_algo.h:5706:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(initializer_list<_Tp>)'
 5706 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5706:5: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_algo.h:5716:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(initializer_list<_Tp>, _Compare)'
 5716 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5716:5: note:   template argument deduction/substitution failed:
a.cc:34:55: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   34 |       dp.at(j).at(0).at(1)+=dp.at(j-1).at(0).at(1)+max(b.at(n-j-1)-a.at(n-j-1),0)*dp.at(j-1).at(0).at(0);
      |                                                    ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
a.cc:35:55: error: no matching function for call to 'max(int, __gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type)'
   35 |       dp.at(j).at(1).at(0)+=dp.at(j-1).at(1).at(0)+max(0,b.at(n-j-1)-a.at(n-j-1))*dp.at(j-1).at(0).at(0);
      |                                                    ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_algobase.h:257:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  257 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:257:5: note:   template argument deduction/substitution failed:
a.cc:35:55: note:   deduced conflicting types for parameter 'const _Tp' ('int' and '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'})
   35 |       dp.at(j).at(1).at(0)+=dp.at(j-1).at(1).at(0)+max(0,b.at(n-j-1)-a.at(n-j-1))*dp.at(j-1).at(0).at(0);
      |                                                    ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_algobase.h:303:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  303 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:303:5: note:   candidate expects 3 arguments, 2 provided
/usr/include/c++/14/bits/stl_algo.h:5706:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(initializer_list<_Tp>)'
 5706 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5706:5: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_algo.h:5716:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(initializer_list<_Tp>, _Compare)'
 5716 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5716:5: note:   template argument deduction/substitution failed:
a.cc:35:55: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   35 |       dp.at(j).at(1).at(0)+=dp.at(j-1).at(1).at(0)+max(0,b.at(n-j-1)-a.at(n-j-1))*dp.at(j-1).at(0).at(0);
      |                                                    ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~