Cod sursa(job #1012042)

Utilizator bigdoggMic Matei bigdogg Data 17 octombrie 2013 22:09:52
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;

typedef struct
{
  int start;
  int end; // inclusive
  int val;
} Sequence;

int main(int argc, char *argv[])
{
  ifstream in("ssm.in");
  Sequence max = {0, 0, 0}, endsHere = {0, 0, 0};
  int n, x;
  
  in >> n >> x;
  max.val = endsHere.val = x;
  for(int count = 2; count <= n; ++count)
  {
    in >> x;

    if(endsHere.val >= 0) endsHere.val += x, ++endsHere.end;
    else endsHere.val = x, endsHere.start = endsHere.end = count - 1;

    if(endsHere.val > max.val) max = endsHere;
    else if(endsHere.val == max.val && endsHere.start == max.start
      && endsHere.end - endsHere.start < max.end - max.start)
      max.end = endsHere.end;
  }

  ofstream out("ssm.out");
  out << max.val << ' ' << max.start + 1<< ' ' << max.end + 1<< endl;

  return 0;
}