به دو روش توابع test1 و test2
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
void test1(){
std::vector<int> arr={0,1,2,3,4,5,6,7,8,9} ;
std::vector<int> sigma;
int kernel_size = 3;
for (int i=0;i <= arr.size() - kernel_size;i++){
int sum = 0;
for (int j=i;j < i + kernel_size;j++)
sum += arr[j];
sigma.push_back(sum);
}
auto pos = std::max_element(sigma.begin(),sigma.end());
if (pos != sigma.end())
cout << std::distance(sigma.begin(),pos)+(kernel_size/2);
}
void test2(){
std::vector<int> arr={0,1,2,3,4,5,6,7,8,9} ;
std::vector<int> sigma;
int kernel_size = 3;
for (int i=0;i <= arr.size() - kernel_size;i++){
int sum = std::accumulate(arr.begin()+i, arr.begin()+i+3, 0);
sigma.push_back(sum);
}
auto pos = std::max_element(sigma.begin(),sigma.end());
if (pos != sigma.end())
cout << std::distance(sigma.begin(),pos)+(kernel_size/2);
//
}
int main()
{
//test1();
test2();
return 0;
}