Language: C++

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
ll knapsack(ll a[],ll b[],ll n,ll w){
int mat[2][w+1];
    memset(mat, 0, sizeof(mat));

    // iterate through all items
    int i = 0;
    while (i < n) // one by one traverse each element
    {
        int j = 0; // traverse all weights j <= W

        // if i is odd that mean till now we have odd
        // number of elements so we store result in 1th
        // indexed row
        if (i%2!=0)
        {
            while (++j <= w) // check for each value
            {
                if (b[i] <= j) // include element
                    mat[1][j] = max(a[i] + mat[0][j-b[i]],mat[0][j] );
                else           // exclude element
                    mat[1][j] = mat[0][j];
            }

        }

        // if i is even that mean till now we have even number
        // of elements so we store result in 0th indexed row
        else
        {
            while(++j <= w)
            {
                if (b[i] <= j)
                    mat[0][j] = max(a[i] + mat[1][j-b[i]],
                                     mat[1][j]);
                else
                    mat[0][j] = mat[1][j];
            }
        }
        i++;
    }

    // Return mat[0][W] if n is odd, else mat[1][W]
    return (n%2 != 0)? mat[0][w] : mat[1][w]; }

int main(){
    ll n,w;
    cin>>n>>w;
    ll a[n],b[n];
    for(ll i=0;i<n;i++)
        cin>>b[i]>>a[i];
    cout<<knapsack(a,b,n,w);
    return 0;
}


Compiler output:
a.cc: In function 'll knapsack(ll*, ll*, ll, ll)':
a.cc:24:36: error: no matching function for call to 'max(ll, int&)'
   24 |                     mat[1][j] = max(a[i] + mat[0][j-b[i]],mat[0][j] );
      |                                 ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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:24:36: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   24 |                     mat[1][j] = max(a[i] + mat[0][j-b[i]],mat[0][j] );
      |                                 ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/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:24:36: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   24 |                     mat[1][j] = max(a[i] + mat[0][j-b[i]],mat[0][j] );
      |                                 ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.cc:38:36: error: no matching function for call to 'max(ll, int&)'
   38 |                     mat[0][j] = max(a[i] + mat[1][j-b[i]],
      |                                 ~~~^~~~~~~~~~~~~~~~~~~~~~~
   39 |                                      mat[1][j]);
      |                                      ~~~~~~~~~~
/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:38:36: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   38 |                     mat[0][j] = max(a[i] + mat[1][j-b[i]],
      |                                 ~~~^~~~~~~~~~~~~~~~~~~~~~~
   39 |                                      mat[1][j]);
      |                                      ~~~~~~~~~~
/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:38:36: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   38 |                     mat[0][j] = max(a[i] + mat[1][j-b[i]],
      |                                 ~~~^~~~~~~~~~~~~~~~~~~~~~~
   39 |                                      mat[1][j]);
      |                                      ~~~~~~~~~~