Cod sursa(job #1582057)

Utilizator hrazvanHarsan Razvan hrazvan Data 27 ianuarie 2016 16:59:23
Problema Subsecventa de suma maxima Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>
#include <ctype.h>
#define INF 2000000000
#define BUF_SIZE 1<<20
int pos=BUF_SIZE;
char buf[BUF_SIZE];
FILE *in;
inline char nextch(){
  if(pos==BUF_SIZE){
    fread(buf, BUF_SIZE, 1, in);
    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(){
  in = fopen("ssm.in", "r");
  int n, i, smax = -INF, sc = 0, x, st, len, cst;
  n=read();
  for(i = 0; i < n; i++){
    x=read();
    if(sc < 0){
      sc = 0;
      cst = i;
    }
    sc += x;
    if(sc > smax){
      smax = sc;
      st = cst;
      len = i;
    }
  }
  fclose(in);
  FILE *out = fopen("ssm.out", "w");
  fprintf(out, "%d %d %d", smax, st + 1, len + 1);
  fclose(out);
  return 0;
}