Cod sursa(job #2911592)

Utilizator alexdvResiga Alexandru alexdv Data 30 iunie 2022 17:09:02
Problema Secventa 2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <iostream>
#include <fstream>
using namespace std;

int maxx = -25005, countt, positive = 0, last_left, act, n, k, v[50001], leftt = 1, rightt = 1;

int main() {
    ifstream fin("secv2.in");
    ofstream fout("secv2.out");
    fin >> n >> k;
    for (int i = 1; i <= n; ++i) {
        fin >> v[i];
        if (v[i] > 0) {
            ++positive;
        }
    }
    if (positive > 0) {
        for (int i = 1; i <= n; ++i) {
            act = act + v[i];
            ++countt;
            if (countt == 1) {
                leftt = i;
            }
            if (maxx < act) {
                maxx = act;
                rightt = i;
                last_left = leftt;
            }
            if (act < 0) {
                act = 0;
                countt = 0;
            }
        }
        if ((rightt - last_left + 1) >= k) {
            fout << last_left << ' ' << rightt << ' ' << maxx;
        }
    } else {
        int summ = 0, maxxsumm = 0, lft = 1, rght = 1;
        for (int i = 1; i <= k; ++i) {
            maxxsumm = maxxsumm + v[i];
            rght = i;
        }
        summ = maxxsumm;
        for (int i = k + 1; i <= n; ++i) {
            summ = summ + (v[i - k] * -1) + v[i];
            if (summ > maxxsumm) {
                maxxsumm = summ;
                lft = i - k + 1;
                rght = i;
            }
        }
        fout << lft << ' ' << rght << ' ' << maxxsumm;
    }
    return 0;
}