Cod sursa(job #2813092)

Utilizator andreic06Andrei Calota andreic06 Data 5 decembrie 2021 18:31:42
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <fstream>

using namespace std;
using ll = long long;
const int NMAX = 6e6;
const long long INF = 1e18;
ll dp[1 + NMAX];

ifstream fin ( "ssm.in" );
ofstream fout ( "ssm.out" );
int main()
{
   int n; fin >> n;

   int left = 1; ll maxx = -INF;
   int left_bound, right_bound;
   for ( int i = 1; i <= n; i ++ ) {
      int x; fin >> x;
      if ( dp[i - 1] > 0 )
        dp[i] = dp[i - 1] + x;
      else {
        left = i;
        dp[i] = x;
      }

      if ( dp[i] > maxx ) {
        maxx = dp[i];
        left_bound = left;
        right_bound = i;
      }
   }
   fout << maxx << " " << left_bound << " " << right_bound;
    return 0;
}