# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1133849 | sidripper | Tracks in the Snow (BOI13_tracks) | C++20 | Compilation error | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
void dfs(int row, int col, int H, int W, vector<vector<int>>* grid, set<pair<int, int>>* visited, int* rabbit, int* fox) {
if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) {
return;
}
*visited.insert({row, col})
if (*grid[row][col] == 'R') {
*rabbit = 1;
}
if (*grid[row][col] == 'F') {
*fox = 1;
}
dfs(row+1, col, H, W, grid, visited, rabbit, fox);
dfs(row-1, col, H, W, grid, visited, rabbit, fox);
dfs(row, col+1, H, W, grid, visited, rabbit, fox);
dfs(row, col-1, H, W, grid, visited, rabbit, fox);
}
int main () {
int H, W;
cin >> H >> W;
vector< vector<int> > grid;
int val;
for (int i=0; i<H; i++) {
for (int j=0; j<W; j++) {
cin >> val;
grid[i].push_back(val);
}
}
set<pair<int, int>> visited;
int ans = 0;
for (int row=0; row<H; row++) {
for (int col=0; col<W; col++) {
if (grid[row][col] == '.' || visited.find({row, col}) != visited.end()) {
continue;
}
int rabbit = 0;
int fox = 0;
dfs(row, col, H, W, &grid, &visited, &rabbit, &fox);
ans += rabbit;
ans += fox;
}
}
cout << ans;
}
Compilation message (stderr)
tracks.cpp: In function 'void dfs(int, int, int, int, std::vector<std::vector<int> >*, std::set<std::pair<int, int> >*, int*, int*)': tracks.cpp:8:60: error: no match for 'operator*' (operand type is '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'}) 8 | if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) { In file included from /usr/include/c++/11/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54, from tracks.cpp:1: /usr/include/c++/11/complex:392:5: note: candidate: 'template<class _Tp> constexpr std::complex<_Tp> std::operator*(const std::complex<_Tp>&, const std::complex<_Tp>&)' 392 | operator*(const complex<_Tp>& __x, const complex<_Tp>& __y) | ^~~~~~~~ /usr/include/c++/11/complex:392:5: note: template argument deduction/substitution failed: tracks.cpp:8:74: note: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::complex<_Tp>' 8 | if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) { | ^ In file included from /usr/include/c++/11/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54, from tracks.cpp:1: /usr/include/c++/11/complex:401:5: note: candidate: 'template<class _Tp> constexpr std::complex<_Tp> std::operator*(const std::complex<_Tp>&, const _Tp&)' 401 | operator*(const complex<_Tp>& __x, const _Tp& __y) | ^~~~~~~~ /usr/include/c++/11/complex:401:5: note: template argument deduction/substitution failed: tracks.cpp:8:74: note: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::complex<_Tp>' 8 | if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) { | ^ In file included from /usr/include/c++/11/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54, from tracks.cpp:1: /usr/include/c++/11/complex:410:5: note: candidate: 'template<class _Tp> constexpr std::complex<_Tp> std::operator*(const _Tp&, const std::complex<_Tp>&)' 410 | operator*(const _Tp& __x, const complex<_Tp>& __y) | ^~~~~~~~ /usr/include/c++/11/complex:410:5: note: template argument deduction/substitution failed: tracks.cpp:8:74: note: candidate expects 2 arguments, 1 provided 8 | if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) { | ^ In file included from /usr/include/c++/11/valarray:603, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/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 std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::_Expr<_Dom2, typename _Dom2::value_type>&)' 407 | _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/bits/valarray_after.h:407:5: note: template argument deduction/substitution failed: tracks.cpp:8:74: note: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>' 8 | if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) { | ^ In file included from /usr/include/c++/11/valarray:603, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/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 std::_Expr<_Dom1, typename _Dom1::value_type>&, const typename _Dom::value_type&)' 407 | _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/bits/valarray_after.h:407:5: note: template argument deduction/substitution failed: tracks.cpp:8:74: note: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>' 8 | if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) { | ^ In file included from /usr/include/c++/11/valarray:603, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/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 std::_Expr<_Dom1, typename _Dom1::value_type>&)' 407 | _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/bits/valarray_after.h:407:5: note: template argument deduction/substitution failed: tracks.cpp:8:74: note: candidate expects 2 arguments, 1 provided 8 | if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) { | ^ In file included from /usr/include/c++/11/valarray:603, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/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 std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::valarray<typename _Dom::value_type>&)' 407 | _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/bits/valarray_after.h:407:5: note: template argument deduction/substitution failed: tracks.cpp:8:74: note: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>' 8 | if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) { | ^ In file included from /usr/include/c++/11/valarray:603, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/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 std::valarray<typename _Dom::value_type>&, const std::_Expr<_Dom1, typename _Dom1::value_type>&)' 407 | _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/bits/valarray_after.h:407:5: note: template argument deduction/substitution failed: tracks.cpp:8:74: note: candidate expects 2 arguments, 1 provided 8 | if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) { | ^ In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/valarray:1188: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 std::valarray<_Tp>&, const std::valarray<_Tp>&)' 1188 | _DEFINE_BINARY_OPERATOR(*, __multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/valarray:1188:1: note: template argument deduction/substitution failed: tracks.cpp:8:74: note: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::valarray<_Tp>' 8 | if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) { | ^ In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/valarray:1188:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__multiplies, std::_ValArray, std::_Constant, _Tp, _Tp>, typename std::__fun<std::__multiplies, _Tp>::result_type> std::operator*(const std::valarray<_Tp>&, const typename std::valarray<_Tp>::value_type&)' 1188 | _DEFINE_BINARY_OPERATOR(*, __multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/valarray:1188:1: note: template argument deduction/substitution failed: tracks.cpp:8:74: note: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::valarray<_Tp>' 8 | if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) { | ^ In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/valarray:1188:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__multiplies, std::_Constant, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__multiplies, _Tp>::result_type> std::operator*(const typename std::valarray<_Tp>::value_type&, const std::valarray<_Tp>&)' 1188 | _DEFINE_BINARY_OPERATOR(*, __multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/valarray:1188:1: note: template argument deduction/substitution failed: tracks.cpp:8:74: note: candidate expects 2 arguments, 1 provided 8 | if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) { | ^ tracks.cpp:8:95: error: request for member 'find' in 'visited', which is of pointer type 'std::set<std::pair<int, int> >*' (maybe you meant to use '->' ?) 8 | if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) { | ^~~~ tracks.cpp:8:124: error: request for member 'end' in 'visited', which is of pointer type 'std::set<std::pair<int, int> >*' (maybe you meant to use '->' ?) 8 | if (row < 0 || col < 0 || col >= W || row >= H || *grid[row][col] == '.' || *visited.find({row, col}) != *visited.end()) { | ^~~ tracks.cpp:12:18: error: request for member 'insert' in 'visited', which is of pointer type 'std::set<std::pair<int, int> >*' (maybe you meant to use '->' ?) 12 | *visited.insert({row, col}) | ^~~~~~ tracks.cpp:16:13: error: no match for 'operator*' (operand type is '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'}) 16 | if (*grid[row][col] == 'F') { In file included from /usr/include/c++/11/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54, from tracks.cpp:1: /usr/include/c++/11/complex:392:5: note: candidate: 'template<class _Tp> constexpr std::complex<_Tp> std::operator*(const std::complex<_Tp>&, const std::complex<_Tp>&)' 392 | operator*(const complex<_Tp>& __x, const complex<_Tp>& __y) | ^~~~~~~~ /usr/include/c++/11/complex:392:5: note: template argument deduction/substitution failed: tracks.cpp:16:27: note: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::complex<_Tp>' 16 | if (*grid[row][col] == 'F') { | ^ In file included from /usr/include/c++/11/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54, from tracks.cpp:1: /usr/include/c++/11/complex:401:5: note: candidate: 'template<class _Tp> constexpr std::complex<_Tp> std::operator*(const std::complex<_Tp>&, const _Tp&)' 401 | operator*(const complex<_Tp>& __x, const _Tp& __y) | ^~~~~~~~ /usr/include/c++/11/complex:401:5: note: template argument deduction/substitution failed: tracks.cpp:16:27: note: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::complex<_Tp>' 16 | if (*grid[row][col] == 'F') { | ^ In file included from /usr/include/c++/11/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54, from tracks.cpp:1: /usr/include/c++/11/complex:410:5: note: candidate: 'template<class _Tp> constexpr std::complex<_Tp> std::operator*(const _Tp&, const std::complex<_Tp>&)' 410 | operator*(const _Tp& __x, const complex<_Tp>& __y) | ^~~~~~~~ /usr/include/c++/11/complex:410:5: note: template argument deduction/substitution failed: tracks.cpp:16:27: note: candidate expects 2 arguments, 1 provided 16 | if (*grid[row][col] == 'F') { | ^ In file included from /usr/include/c++/11/valarray:603, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/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 std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::_Expr<_Dom2, typename _Dom2::value_type>&)' 407 | _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/bits/valarray_after.h:407:5: note: template argument deduction/substitution failed: tracks.cpp:16:27: note: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>' 16 | if (*grid[row][col] == 'F') { | ^ In file included from /usr/include/c++/11/valarray:603, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/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 std::_Expr<_Dom1, typename _Dom1::value_type>&, const typename _Dom::value_type&)' 407 | _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/bits/valarray_after.h:407:5: note: template argument deduction/substitution failed: tracks.cpp:16:27: note: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>' 16 | if (*grid[row][col] == 'F') { | ^ In file included from /usr/include/c++/11/valarray:603, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/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 std::_Expr<_Dom1, typename _Dom1::value_type>&)' 407 | _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/bits/valarray_after.h:407:5: note: template argument deduction/substitution failed: tracks.cpp:16:27: note: candidate expects 2 arguments, 1 provided 16 | if (*grid[row][col] == 'F') { | ^ In file included from /usr/include/c++/11/valarray:603, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/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 std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::valarray<typename _Dom::value_type>&)' 407 | _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/bits/valarray_after.h:407:5: note: template argument deduction/substitution failed: tracks.cpp:16:27: note: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>' 16 | if (*grid[row][col] == 'F') { | ^ In file included from /usr/include/c++/11/valarray:603, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/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 std::valarray<typename _Dom::value_type>&, const std::_Expr<_Dom1, typename _Dom1::value_type>&)' 407 | _DEFINE_EXPR_BINARY_OPERATOR(*, struct std::__multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/bits/valarray_after.h:407:5: note: template argument deduction/substitution failed: tracks.cpp:16:27: note: candidate expects 2 arguments, 1 provided 16 | if (*grid[row][col] == 'F') { | ^ In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/valarray:1188: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 std::valarray<_Tp>&, const std::valarray<_Tp>&)' 1188 | _DEFINE_BINARY_OPERATOR(*, __multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/valarray:1188:1: note: template argument deduction/substitution failed: tracks.cpp:16:27: note: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::valarray<_Tp>' 16 | if (*grid[row][col] == 'F') { | ^ In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/valarray:1188:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__multiplies, std::_ValArray, std::_Constant, _Tp, _Tp>, typename std::__fun<std::__multiplies, _Tp>::result_type> std::operator*(const std::valarray<_Tp>&, const typename std::valarray<_Tp>::value_type&)' 1188 | _DEFINE_BINARY_OPERATOR(*, __multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/valarray:1188:1: note: template argument deduction/substitution failed: tracks.cpp:16:27: note: '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::valarray<_Tp>' 16 | if (*grid[row][col] == 'F') { | ^ In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95, from tracks.cpp:1: /usr/include/c++/11/valarray:1188:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__multiplies, std::_Constant, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__multiplies, _Tp>::result_type> std::operator*(const typename std::valarray<_Tp>::value_type&, const std::valarray<_Tp>&)' 1188 | _DEFINE_BINARY_OPERATOR(*, __multiplies) | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/valarray:1188:1: note: template argument deduction/substitution failed: tracks.cpp:16:27: note: candidate expects 2 arguments, 1 provided 16 | if (*grid[row][col] == 'F') { | ^