на С++!! Сумма подряд идущих! Дан массив целых чисел a[1],a[2],...,a[n] и натуральные числа k и m. Укажите минимальное значение i, для которого a[i]+a[i+1]+...+a[i+k]=m (то есть сумма k+1 подряд идущих элементов массива равна m). Если такого значения нет, то выведите 0.

Входные данные

На вход программе сначала подаются значения n, k и m (m≤109, 0
Выходные данные

Выведите ответ на задачу.

Примеры
Ввод
4 1 22
9 13 10 -11

вывод
1

Kr1c Kr1c    3   08.08.2021 10:48    26

Ответы
леомир леомир  07.09.2021 13:41

ответ: на информатиксе

Объяснение:

#include <iostream>

#include <vector>

#include <algorithm>

#include <iterator>

using namespace std;

#define ll long long

int main(){

int n,k,m;

cin>>n>>k>>m;

vector<ll>a(n);

for(vector<ll>::iterator it=a.begin();it<a.end();it++){

cin>>*it;

}

vector<int>p(n + 1);

p[0] = 0;

for (int i = 1; i <= n; ++i)

{

p[i] = p[i - 1] + a[i-1];

}

for (int i = 0; i+k+1 < (int)p.size(); ++i)

{

int res=p[i+k+1]-p[i];

if(res==m){

cout<<i+1;

return 0;

}

}

cout<<0;

}

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика