

Помогите решить задачу на перегрузки функции
Добавьте перегруженную функцию long long sum(int a[], int k, int m) которая возвращает как результат сумму элементов последовательности с индексами из диапазона [k, m).
Формат входных данных
В первой строке задаётся число, обозначающее версию функции, которую необходимо будет использовать:
1 - long long sum(vector<int> a)
2 - long long sum(vector<int> a, int k)
3 - long long sum(int a[], int k)
8 - long long sum(int a[], int k, int m)
Для значений от 1 до 3 формат входных данных повторяет задачи из классной работы.
Для 8 формат следующий:
В следующей строке входных данных задается натуральное число N - количество элементов последовательности. N не превосходит 106.
В следующей строке вводятся N целых чисел через пробел, по модулю не превосходящие 109.
В последней строке вводятся два целых положительных числа k и m,(0 ≤ k < m ≤ N).
Формат выходных данных
Выведите единственное число - результат работы функции.
Примечания
В задачу требуется отправить только описание функций.
сам код:
#include <iostream>
#include <vector>
using namespace std;
long long sum(vector<int>); // 1
long long sum(vector<int>, int); // 2
long long sum(int*, int); // 3
long long sum(vector<int>, int, int); // 4
void sum(vector<int>&, vector<int>, int); // 5
long long sum(int a[][100], int, int); // 6
long long sum(vector<vector<int>>); // 7
long long sum(int*, int, int); // 8
void sum(int a[][100], int b[][100], int, int); // 9
void print(vector<int>);
void print(int *, int);
void print(int a[][100], int, int);
//начало функции
//конец функции
void prob1();
void prob2();
void prob3();
void prob8();
int main() {
int n;
cin >> n;
switch (n) {
case 1: prob1(); break;
case 2: prob2(); break;
case 3: prob3(); break;
case 8: prob8(); break;
}
return 0;
}
void prob1() {
int n;
cin >> n;
vector<int> a(n);
for (int &i : a) cin >> i;
cout << sum(a);
}
void prob2() {
int n;
cin >> n;
vector<int> a(n);
for (int &i : a) cin >> i;
cin >> n;
cout << sum(a, n);
}
void prob3() {
int n;
cin >> n;
int *a = new int[n];
for (int i = 0; i < n; i++)
cin >> a[i];
cin >> n;
cout << sum(a, n);
delete[] a;
}
void prob8() {
int n, m;
cin >> n;
int *a = new int[n];
for (int i = 0; i < n; i++)
cin >> a[i];
cin >> n >> m;
cout << sum(a, n, m);
delete[] a;
}
void print(vector<int>a) {
for (int i : a)
cout << i << " ";
}
void print(int *a, int n) {
for (int i = 0; i < n; i++)
cout << a[i] << " ";
}
void print(int a[][100], int n, int m) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
cout << a[i][j] << " ";
cout << endl;
}
}
писать можно только между комментариями "начало функции" и "конец функции" остальной код должен остаться без изменений
//начало функции
long long sum(int a[], int k, int m) {
long long total = 0;
for (int i = k; i < m; i++) {
total += a[i];
}
return total;
}
//конец функции