Cod sursa(job #1714456)

Utilizator silkMarin Dragos silk Data 8 iunie 2016 12:50:27
Problema Secventa 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <cstdio>
#define NMax 50005
#define DIM 10000
#define INF 1<<30
char buff[DIM];
int poz=0;

int sum[NMax];
int v[NMax];

void citeste(int &numar)
{
     numar = 0;
     char semn='+';
     while (buff[poz] < '0' || buff[poz] > '9')
     {
          semn = buff[poz];
          if (++poz == DIM)
               fread(buff,1,DIM,stdin),poz=0;
     }
     while ('0'<=buff[poz] && buff[poz]<='9')
     {
          numar = numar*10 + buff[poz] - '0';
          if (++poz == DIM)
               fread(buff,1,DIM,stdin),poz=0;
     }
     if (semn == '-')
          numar = -numar;
}

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

    int pos,inc,sf,i,ans,minim=INF,n,k;
    scanf("%d %d",&n,&k);

    for( i = 1; i <= n; ++i )
    {
        citeste( v[i] );
        sum[i] = sum[i-1] + v[i];
    }

    ans = sum[k];
    inc = 1;
    sf = k;
    for( i = k + 1; i <= n; ++i )
    {
        if(minim > sum[i-k]) { minim = sum[i-k]; pos = i - k + 1; }

        if( sum[i] - minim > ans ) { inc = pos; sf = i; ans = sum[i] - minim; }
    }

    printf("%d %d %d\n",inc,sf,ans);




return 0;
}