#include <locale>
#include <vector>
#include <algorithm>
#include <iostream>
#include <boost/algorithm/minmax_element.hpp>
#include <boost/spirit/home/phoenix.hpp>
namespace phx = boost::phoenix;
using phx::arg_names::arg1;
template <typename T, size_t Cols, size_t Rows>
void find(const T (&m)[Cols][Rows])
{
typedef std::vector<T> V;
V sums(Cols);
std::transform(m, m+Cols, sums.begin(), phx::accumulate(arg1, 0));
const std::pair<typename V::iterator, typename V::iterator> mx = boost::minmax_element(sums.begin(), sums.end());
std::cout << "Min element: " << *mx.first << " at line #" << std::distance(sums.begin(), mx.first) + 1 << std::endl;
std::cout << "Max element: " << *mx.second << " at line #" << std::distance(sums.begin(), mx.second) + 1 << std::endl;
}
int main()
{
setlocale(LC_ALL, "");
int m[3][4] =
{
{-1,2,-3,4}, // сумма = 2
{1,-2,3,-4}, // сумма = -2
{1,2,3,4} // сумма = 10
};
find(m);
return 0;
}