Cod sursa(job #56484)

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

#define MAX 50001

#define MAXBUF 400000

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("\n%d %d\n", S[i], S[min]);
           a=S[i]-S[min]; 
           if( a > 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;
     }