#include <iostream>     // std::cout
#include <functional>   // std::minus, std::divides
#include <numeric>      // std::inner_product

unsigned myaccumulator (unsigned x, unsigned y) {return x+y;}
unsigned myLessThan (unsigned x, unsigned y) {return x<y;}

int main () {
  unsigned init = 0;
  unsigned series1[] = {10,20,30};
  unsigned series2[] = {1,2,3};

  std::cout << "using default inner_product: ";
  std::cout << std::inner_product(series1,series1+3,series2,init);
  std::cout << '\n';


  std::cout << "using custom functions: ";
  std::cout << std::inner_product(series1,series1+2,series1 + 1,init,
                                  myaccumulator,myLessThan);
  std::cout << '\n';

  return 0;
}