Cod sursa(job #2173404)

Utilizator diana_sorina.grecuDiana-Sorina Grecu diana_sorina.grecu Data 15 martie 2018 22:05:00
Problema Subsecventa de suma maxima Scor 85
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <climits>
#include <algorithm>

using namespace std;

ifstream f ("ssm.in");
ofstream g ("ssm.out");

int main(void) {
  int n, i, x, maxx = INT_MIN, sp;
  int start, end;
  bool ok = 0;
  vector<int> v;

  f >> n;

  v.push_back(-1);
  for (i = 1; i <= n; i++) {
    f >> x;
    v.push_back(x);

    if (x > 0) {
      ok = 1;
    }

    if (x > maxx) {
      maxx = x;
    }
  }

  // sunt doar numere negative
  if (ok == 0) {
    g << maxx << "\n";
  } else {
    sp = v[1];
    start = 0;
    end = start;

    for (i = 2; i <= n; i++) {
      if (sp >= 0) {
        sp += v[i];
      } else {
        sp = v[i];
        start = i;
      }

      if (sp > maxx) {
        maxx = sp;
        end = i;
      }
    }

    g << maxx << " " << start << " " << end << "\n";
  }

  return 0;
}