Cod sursa(job #2642991)

Utilizator ZahaZaharie Stefan Zaha Data 18 august 2020 09:12:34
Problema Secventa 2 Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <fstream>
#include <vector>
#define ll long long
using namespace std;

ifstream fin("secv2.in");
ofstream fout("secv2.out");

ll n, k;
vector<ll> sums;

int main() {
    fin >> n >> k;

    ll temp, lowest = 0, biggest = 0;
    fin >> temp;
    sums.emplace_back(temp);

    for (ll i = 1; i < n; ++i) {
        fin >> temp;
        sums.emplace_back(sums[i - 1] + temp);

        if (sums[i] < 0 && sums[i] < sums[lowest] && i < n - k)
            lowest = i;

        if (sums[lowest] < 0) {
            if (sums[i] - sums[lowest] > sums[biggest] - sums[lowest] || biggest - lowest < k)
                biggest = i;
        } else {
            if (sums[i] > sums[biggest] || biggest - lowest < k)
                biggest = i;
        }
    }

    if (sums[lowest] < 0) {
        if (sums[biggest] < 0 && k == 1) {
            int mx = sums[0], mxPos = 0;
            for (int i = 1; i < sums.size(); ++i)
                if (sums[i] - sums[i - 1] > mx) {
                    mx = sums[i] - sums[i - 1];
                    mxPos = i;
                }
            fout << mxPos + 1 << " " << mxPos + 1 << " " << mx;
        } else
            fout << lowest + 2 << " " << biggest + 1 << " " << sums[biggest] - sums[lowest];
    } else
        fout << 1 << " " << biggest + 1 << " " << sums[biggest];
}