Cod sursa(job #833402)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 12 decembrie 2012 15:53:38
Problema Secventa 2 Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<cstdio>
#include<deque>
using namespace std;
deque<int> p;
int n,k,s[50010],i,j,a,best,besti,bestj,t;
int main()
{
    freopen("secv2.in","r",stdin);
    freopen("secv2.out","w",stdout);
    scanf("%d %d",&n,&k);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a);
        s[i]=s[i-1]+a;
    }
    for(i=2;p.size()<=k;i++)
    {
        if(s[i]-s[i-1]>=0) p.push_back(i);
    }
    best=s[k]; besti=1; bestj=k;
    for(i=k+1;i<=n;i++)
    {
        if((i-p.front())<(k-1)) continue;
        t=s[i]-s[p.front()-1];
        if(t>=best)
        {
            best=t;
            besti=p.front();
            bestj=i;
        }
        if(t<0)
        {
            t=s[i]-s[i-1];
            p.pop_front();
            p.push_back(i);
        }
    }
    printf("%d %d %d\n",besti,bestj,best);
    return 0;
}