Cod sursa(job #3195600)

Utilizator DariusHHanganu Darius DariusH Data 21 ianuarie 2024 12:55:15
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("ssm.in");
ofstream fout("ssm.out");


int main()
{
  long long n, val, l, r, i, st, dr, sum, maxsum;
  fin >> n;
  l = r = 0;
  maxsum = -INT_MAX - 1;
  st = dr = 0;
  sum = 0;
  for(i = 0; i < n; ++i) {
    fin >> val;
    if(i > 0) {
      if(sum >= 0) {
        sum += val;
        r = i;
        if(sum > maxsum) {
          maxsum = sum;
          st = l;
          dr = r;
        }
      }else{
        sum = val;
        l = r = i;
        if(sum > maxsum) {
          maxsum = sum;
          st = l;
          dr = r;
        }
      }
    }else{
      sum = val;
      if(sum > maxsum) {
        maxsum = sum;
        st = l;
        dr = r;
      }
    }
  }

  if(sum > maxsum) {
    maxsum = sum;
    st = l;
    dr = r;
  }

  fout << maxsum << ' ' << st + 1 << ' ' << dr + 1 << '\n';

  return 0;
}