Cod sursa(job #56465)

Utilizator RazvanSSavu Razvan RazvanS Data 29 aprilie 2007 17:11:43
Problema Secventa 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <cstdio>

#define MAX 50001

#define MAXBUF 200000

int S[MAX];
int c1, c2, max, min;
char buffer[MAXBUF];
int p;

void sub(int &x)
    {x=0;
     int k=buffer[p]=='-'?p++, k=-1 : k=1;
     for( ; buffer[p]>='0' && buffer[p]<='9' ; p++)
             x = x*10 + buffer[p] - '0';
     x*=k;    
    }         

int main( void )
     {
      int n, k;
      freopen("secv2.in", "r", stdin);
      freopen("secv2.out", "w", stdout);
      fread (buffer, 1, MAXBUF, stdin);
      sub(n);//printf("%c\n\n", buffer[9]);
      p++;
      sub(k);
      p++;
      int i, x, a;
      for(i=1;i<=n;++i)
          {
           sub(x);
           S[i]=S[i-1]+x; //printf("%d ", S[i]);
           p++;
          }
     
      max=S[k];//printf("%d\n", max);
      c1=1;
      c2=k;
      min=0;
      for(i=k+1;i<=n;++i)
          {
           if(S[i-k]<S[min]) min=i-k;
           //printf("%d %d\n", S[i], S[min]);
           if( (a= S[i]-S[min]) > max) { max=a; c1=min+1; c2=i;} //printf("%d %d %d\n", c1, c2, max);}
          }
      
      //freopen("secv2.out", "w", stdout);
      printf("%d %d %d\n", c1, c2, max);
      
      return 0;
     }