Cod sursa(job #1789408)

Utilizator SenibelanMales Sebastian Senibelan Data 26 octombrie 2016 23:01:10
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>
#define VECMAX 6000007


using namespace std;

int v[VECMAX], n, sol, dp[VECMAX], indice = 1;

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

void Read(){
  in >> n;
  for(int i = 1; i <= n; ++i)
    in >> v[i];
}

void Solve(){
  sol = dp[1] = v[1];
  for(int i = 1; i <= n; ++i){
    dp[i] = max(dp[i - 1] + v[i], v[i]);
    if(sol < dp[i]){
      sol = dp[i];
      indice = i;
    }
  }
}

void Print(){
  int i = indice, auxsum = sol;
  while(auxsum || (v[i] == 0 && i != 0)){
    auxsum -= v[i];
    i--;
  }
  out << sol << " " << i + 1 << " " << indice << "\n";
}


int main(){
  Read();
  Solve();
  Print();
  return 0;

}