Cod sursa(job #2126825)

Utilizator Stefan_RaduStefan Radu Stefan_Radu Data 9 februarie 2018 23:54:02
Problema Subsecventa de suma maxima Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>

using namespace std;

ifstream cin ("ssm.in");
ofstream cout ("ssm.out");

const int INF = 1e9;

int main () {
  
  int n;
  cin >> n;

  int best = -INF, i_st = -INF, i_fin = -INF;

  int part_sum = 0;
  int last_neg = INF;
  
  bool is_best = false;
  for (int i = 1; i <= n; ++ i) {
    int x;
    cin >> x;
  
    part_sum += x;
    if (part_sum - last_neg > best) {
      best = part_sum - last_neg;
      if (not is_best) {
        is_best = true;
        i_st = i;
      }
      else {
        i_fin = i;
      }
    }

    if (part_sum < 0) {
      last_neg = part_sum;
      is_best = false;
    }
  }

  cout << best << ' ' << i_st << ' ' << i_fin << '\n';
}