Cod sursa(job #635268)

Utilizator cristianalex81Cristian Alexandru cristianalex81 Data 19 noiembrie 2011 01:40:43
Problema Secventa 2 Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <stdio.h>
#define dim 50001

int v[dim];
int n,k;

inline int calc_sec(int i)
{
    int j,s=0;
    for (j=i;j>i-k;j--)
        s+=v[j];
    return s;
}

int main()
{
    freopen("secv2.in","r",stdin);
    freopen("secv2.out","w",stdout);
    int i;
    int max,max_start,max_end;
    int actual,last,start;
    scanf("%d %d",&n,&k);
    for (i=0;i<n;i++)
    {
        scanf("%d",&v[i]);
        if (i==k-1)//process firs seq
        {
            actual=calc_sec(i);
            start = 0;
            last = actual;       //last sequence of k numbers
            max = actual;
            max_start = start;
            max_end = i;
        }
        if (i>=k)
        {
            last = last + v[i]- v[i-k];
            if (actual+v[i]>=last)
            {
                actual=actual+v[i];
            }
            else
            {
                actual=last;
                start = i-k+1;
            }
            if (actual > max)
            {
                max = actual;
                max_start = start;
                max_end = i;
            }
        }
    }
    printf("%d %d %d\n",max_start+1,max_end+1,max);
    return 0;
}