Pagini recente » Cod sursa (job #750687) | Cod sursa (job #2248324) | Cod sursa (job #36221) | Cod sursa (job #1224526) | Cod sursa (job #1365332)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
int main()
{
int N = 0, s = 0, el = 0, suma_maxim = -1<<30, i = 0, a_idx = 0;
int start_idx = 0, final_idx = 0;
in >> N; // numarul de elemente
in >> s; // suma partiala curenta
for(i = 2; i <= N; i++)
{
// citesc elementul
in >> el;
s += el;
// daca elementul in sine este mai mare decat suma partiala
// curenta atunci inseamna ca pot sa bag elementul singur sa
// fie suma partiala, reactualizez indexul de inceput de suma
if (el > s) {
s = el;
a_idx = i;
}
// daca suma partiala este mai mare decat suma maxima curenta
// atunci reactualizam suma maxima curenta impreuna ca indecsii
// asociati
if (s > suma_maxim) {
suma_maxim = s;
start_idx = a_idx;
final_idx = i;
}
}
// se afiseaza
out << suma_maxim << " " << start_idx << " " << final_idx << "\n";
return 0;
}