Найти максимальную из сумм положительных элементов беспрерывной последовательности С++

Например есть одномерный динамический массив в котором есть такие числа: {-5; 50; -5; 1; 2; 3;} максимальная сумма последовательности - 6. Так как последовательность считается только если есть 3 и более положительных элементов подряд. Или например массив : {-5; 4; 3; 2;} - должно вывести 9. У меня вышло так, не понимаю как это будет правильнее переделать. Как бы добавить счётчик чтоб оно правильно считало сумму. Прилагаю 2 варианта, один в комментарии другой нет.

#include <iostream>
#include <ctime>
#include <windows.h>
#include <math.h>


using namespace std;
int main() {
    int n = 0;
    int max = 0;
    int sum = 0;
    int kount = 0;
    //int index_kount_first = 0, index_kount_first = 0;
    cout << "Eneter cout of el massiv: " << endl;
    cin >> n;


    int* arr = new int[n];

    cout << "Eneter el massiv: " << endl;
    //Заполнение массива
    for (int i = 0; i < n; i++) {
        //arr[i] = rand() % 10;
        cin >> arr[i];
    }

    //Вывод массива
    for (int i = 0; i < n; i++) {
        cout << arr[i] << "\t";
    }


    for (int i = 0; i < n; i++) {

        if (arr[i] < 0) {
            sum = 0;
            kount = 0;
        }

        else {
            //Счётчик который должен быть не менее 3 чтобы найти последовательность
            /*for (int j = 0; j < (i + 1); j++) {
                if (arr[j] > 0) {
                    kount += 1;
                }
                else {
                    kount = 0;
                }
            }

            //Если элемент положительный и счётчик больше или равен 3 тогда считаем сумму последовательность положительных чисел
            if (kount >= 3 && arr[i] > 0) {
                cout << "kount = " << kount << endl;
                sum = sum + arr[i-2] + arr[i-1] + arr[i];
                if (max < sum) {
                    max = sum;
                }
            
            if (kount >= 3) {
                for (int y = kount - 2; y < kount; y++) {
                    int k = 0;
                    while (arr[i - 2] > 0) {
                        k++;
                        sum += arr[i - 2];
                        if (max < sum) {
                            max = sum;
                        }
                        break;
                        if (k > 3)
                            break;
                    }*/
            while (arr[i + 1] > 0) {
                sum += arr[i + 1];
                if (max < sum) {
                    max = sum;
                }
                break;
            }
        }

        cout << "Max: " << max << endl;

    }

    delete[] arr;
    
}

Ответы (1 шт):

Автор решения: MBo

Примерно так:

for (int i = 0; i <= n; i++) {
   if (i<n && arr[i] > 0) {
      kount++;
      sum+=arr[i]; 
   }
   else {
     if kount > 2
        maxsum = max(sum, maxsum);
     kount = 0;
     sum = 0;
   } 
}
→ Ссылка