Cod sursa(job #2689472)

Utilizator Asgari_ArminArmin Asgari Asgari_Armin Data 20 decembrie 2020 23:43:31
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

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

static inline long long max(long long a, long long b){
  return a < b ? b : a;
}

int main() {
  long long n, st, stsol, drsol, i, x, sum, maxx, maxnr, stnr, drnr;
  fin >> n;
  sum = maxx = 0;
  maxnr = -(1LL << 32);
  for( i = 0; i < n; ++i ){
    fin >> x;
    if( maxnr < x ){
      maxnr = x;
      stnr = drnr = i + 1;
    }
    sum += x;
    if( sum < 0 ){
      st = i + 1;
      sum = 0;
    }
    if( maxx < sum ){
      maxx = sum;
      stsol = st + 1;
      drsol = i + 1;
    }
    maxx = max(maxx, sum);
  }
  if( maxnr < 0 )
    fout << maxnr << " " << stnr << " " << drnr;
  else
    fout << maxx << " " << stsol << " " << drsol;
  return 0;
}