Cod sursa(job #1582058)

Utilizator hrazvanHarsan Razvan hrazvan Data 27 ianuarie 2016 16:59:35
Problema Secventa 2 Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <stdio.h>
#include <ctype.h>
#define MAXN 50000
#define INF 2000000000
#define BUF_SIZE (1 << 17)
int v[MAXN];
char buf[BUF_SIZE];
int pos = BUF_SIZE;
FILE *fin, *ofut;
inline char nextch(){
  if(pos==BUF_SIZE){
    fread(buf, BUF_SIZE, 1, fin);
    pos=0;
  }
  return buf[pos++];
}
inline int read(){
  int x=0, s=1;
  char ch=nextch();
  while((!isdigit(ch))&&(ch!='-')){
    ch=nextch();
  }
  if(ch=='-'){
    s=-1;
    ch=nextch();
  }
  while(isdigit(ch)){
    x=10*x+ch-'0';
    ch=nextch();
  }
  return x*s;
}
int main(){
  int n, k, min = INF, ans = -INF, i, st, dr, pst = 0;
  fin=fopen("secv2.in", "r");
  ofut=fopen("secv2.out", "w");
  n = read();  k = read();
  for(i=1; i<=n; i++){
    v[i] = read();
    v[i]+=v[i-1];
  }
  for(i=k; i<=n; i++){
    if(min>v[i-k]){
      min=v[i-k];
      pst = i - k + 1;
    }
    if(ans<v[i]-min){
      ans=v[i]-min;
      st = pst;
      dr = i;
    }
  }
  fprintf(ofut, "%d %d %d\n", st, dr, ans);
  fclose(fin);
  fclose(ofut);
  return 0;
}