Cod sursa(job #2210720)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 7 iunie 2018 19:19:32
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;

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

const int INF = 2000000000;
const int NMax = 6000001;

int n;
int a[NMax],mx[NMax];

int main()
{
  f >> n;
  for(int i = 1; i <= n; ++i){
    f >> a[i];
    mx[i] = -INF;
  }
  int ans1 = -INF;
  int ans2 = 0;
  int ans3 = 0;
  int l = 0;

  for(int i = 1; i <= n; ++i){
    if(mx[i - 1] + a[i] > a[i]){
      mx[i] = mx[i - 1] + a[i];
      if(ans1 < mx[i]){
        ans1 = mx[i];
        ans2 = l;
        ans3 = i;
      }
    }else{
      mx[i] = a[i];
      l = i;
      if(ans1 < mx[i]){
        ans1 = mx[i];
        ans2 = l;
        ans3 = i;
      }
    }
  }
  g << ans1 << ' ' << ans2 << ' ' << ans3 << '\n';
  return 0;
}