Cod sursa(job #2968791)

Utilizator IanisBelu Ianis Ianis Data 21 ianuarie 2023 23:14:37
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

#ifdef LOCAL
ifstream fin("input.txt");
#define fout cout
#else
ifstream fin("ssm.in");
ofstream fout("ssm.out");
#endif

#define endl '\n'

const int NMAX = 6e6+5;

int n;
int a[NMAX];

void read() {
  fin >> n;
  for (int i = 1; i <= n; i++) {
    fin >> a[i];
  }
}

void solve() {
  int64_t sp = 0, mn = 0, ans = -1e18;
  int l = 1, r = 0, mn_idx = 0;

  for (int i = 1; i <= n; i++) {
    sp += a[i];
    if (ans < sp - mn) {
      ans = sp - mn;
      l = mn_idx + 1, r = i;
    }
    if (mn > sp) {
      mn = sp;
      mn_idx = i;
    }
  }

  fout << ans << ' ' << l << ' ' << r;
}

int main() {
  read();
  solve();
  return 0;
}