Cod sursa(job #2470665)

Utilizator Diana-ElenaStancu Diana-Elena Diana-Elena Data 9 octombrie 2019 17:37:18
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
const int NMAX = 7000005;
long long int n, s[NMAX], i;
int main(){
long long int min = 0, bestSum = -int(2e9), beg, end, idx;
 fin >> n;
 for(i = 1; i <= n; ++i)
   fin >> s[i];

 for(i = 1; i <= n; ++i)
 {
   // se calculeaza suma tuturor numerelor de la 1->i
   s[i] += s[i - 1];
   //daca suma este mai mare atunci se continua cautarea variabila end preluand capatul din dreapta as sirului iar beg luand pozitia noului subsir de suma maxima
   if(bestSum < s[i] - min) bestSum = s[i] - min, end = i, beg = idx + 1;
   //daca suma e mai mica atunci se cauta un nou sir idx = i, iar min devine suma respectiva
   if(min > s[i])   min = s[i], idx = i;
 }
fout << bestSum << ' ' << beg << ' ' << end;
fin.close();
fout.close();
  return 0;
}