Cod sursa(job #2396047)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 3 aprilie 2019 10:29:54
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, k, s, l, maxx, st, dr;

int main (){

      fin>>n;

/**
      calculam D[i] = suma maxima a unei secvente TERMINATE cu elementul de pe pozitia i
      ma intereseaza locul unde se termina exact secventa pentru a lua in calcul
      sa lipesc la ea urmatorul element
      v: 2  4 -3 -5  1  6 -2 -3  5  6 -2  3  1 -2  1
      D: 2  6  3 -2  1  7  5  2  7 13 11 14 15 13 14
**/

      fin>>k;
      s=k;
      l=1;


      maxx=s;
      st=1;
      dr=1;

      for(int i=2; i<=n; i++){

            fin>>k;

            if (k + s >= k){
                  s=s + k;
            }else{
                  s = k;
                  l=i;
            }

            if(s > maxx){
                  maxx=s;
                  st=l;
                  dr=i;
            }
      }

      fout<<maxx<<" "<<st<<" "<<dr;


      return 0;
}