Cod sursa(job #1725718)

Utilizator TibiraducanuTiberiu Raducanu Tibiraducanu Data 6 iulie 2016 12:12:19
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <cstdio>

using namespace std;

const int N=50001;
struct secv
{
    int sum,last;
} d[N];
int s[N];

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

    int i,n,k,rez,maxx=-(1<<30),in,sf,ind;
    scanf("%d%d",&n,&k);

    d[0].sum=-1;

    for(i=1;i<=n;i++)
    {
        scanf("%d",&s[i]);
        d[i].sum=s[i];

        if(d[i-1].sum>=0)
        {
            d[i].sum+=d[i-1].sum;
            d[i].last=d[i-1].last;
        }
        else d[i].last=i;

        s[i]+=s[i-1];
        if(i>=k)
        {
            ind=i-k+1;
            rez=s[i]-s[i-k];
            if(d[i-k].sum>=0)
            {
                rez+=d[i-k].sum;
                ind=d[i-k].last;
            }

            if(rez>maxx)
            {
                maxx=rez;
                in=ind;
                sf=i;
            }
        }
    }

    printf("%d %d %d\n",in,sf,maxx);



    return 0;
}