Cod sursa(job #2717570)

Utilizator Maria23Dutu Maria Maria23 Data 7 martie 2021 16:57:19
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
// 80 puncte
// probabil gresesc asta:
// Dacă există mai mult subsecvenţe candidate la soluţie,
// atunci se va tipări cea cu indicele de început cel mai mic, iar în caz de
// egalitate cea mai scurtă.

#include <fstream>
#include <iostream>

using namespace std;

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

  long long n;
  fin >> n;
  long long x, sumaMax, sumaCurenta, indiceInceput = 1, indiceSfarsit = 1,
                                     indiceDeInceputAuxiliar;
  fin >> x;
  sumaMax = x;
  sumaCurenta = x;
  for (long long i = 2; i <= n; i++) {
    fin >> x;
    if (sumaCurenta + x >= x) {  // >= nu >
      sumaCurenta += x;
    } else {
      // sumaMax = x; aici e o greseala
      sumaCurenta = x;
      // indiceInceput = i; aici e greseala, trebuie o variabila separata
      indiceDeInceputAuxiliar = i;
    }
    if (sumaCurenta > sumaMax) {
      sumaMax = sumaCurenta;
      indiceSfarsit = i;
      indiceInceput = indiceDeInceputAuxiliar;
    }
  }
  fout << sumaMax << " " << indiceInceput << " " << indiceSfarsit;
  return 0;
}