Cod sursa(job #1460183)

Utilizator GeiGeiGeorge Cioroiu GeiGei Data 11 iulie 2015 19:06:10
Problema Secventa 2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <cstdio>
#include <iostream>
#include <vector>
#include <set>
#include <cmath>
#include <climits>
#include <list>
#include <iomanip>
#include <cstdlib>
#include <map>
#define nmax 50005

using namespace std;

int main() {
    freopen("secv2.in", "r", stdin);
    freopen("secv2.out", "w", stdout);

    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n, k;
    cin >> n >> k;
    int v[nmax], poz[nmax], sum[nmax];
    sum[0] = 0;
    for (int i = 1; i <= n; i++) {
        cin >> v[i];
        sum[i] = v[i] + ((sum[i - 1] > 0) ? sum[i - 1] : 0);
    }
    poz[0] = 0;
    for (int i = 1; i <= k; i++) {
        poz[i] = poz[i - 1] + v[i];
    }
    int inc = 1, fin = k, sm = poz[k];
    for (int i = k + 1; i <= n; i++) {
        poz[i] = poz[i - 1] + v[i];
        if (sum[i - k] <= 0) {
            poz[i] -= sum[i - k];
            if (poz[i] > sm) {
                sm = poz[i];
                fin = i;
                inc = i - k + 1;
            }
        }
        if (poz[i] > sm) {
            sm = poz[i];
            fin = i;
        }
    }
    cout << inc << " " << fin << " " << sm;

    return 0;
}