Cod sursa(job #662963)

Utilizator repp4raduRadu-Andrei Szasz repp4radu Data 17 ianuarie 2012 15:38:29
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <cstdio>

#define MAX 50050
#define MIN -1300000000

using namespace std;

int n;
int k;
int v[MAX];
int start, sfarsit;
int maxim = MIN;

void citire()
{
    freopen("secv2.in", "r", stdin);
    scanf("%d %d\n", &n, &k);
    for(int i = 1; i <= n; i++)
    {
        scanf("%d ", &v[i]);
    }
    fclose(stdin);
}

void afisare()
{
    freopen("secv2.out", "w", stdout);
    printf("%d %d %d", start, sfarsit, maxim);
    fclose(stdout);
}

void rezolvare()
{
    int s = 0;
    int sPart = 0;
    int Si = 1;
    for(int i = 1; i <= k; i++)
    {
        sPart += v[i];
    }
    start = 1;
    sfarsit = k;
    s = sPart;
    maxim = s;
    for(int i = k + 1; i <= n; i++)
    {
        sPart = sPart - v[i - k] + v[i];
        if(s + v[i] < sPart)
        {
            s = sPart;
            Si = i - k + 1;
        }
        else
        {
            s += v[i];
        }
        if(s > maxim)
        {
            maxim = s;
            start = Si;
            sfarsit = i;
        }
    }
}

int main()
{
    citire();
    rezolvare();
    afisare();
    return 0;
}