Pagini recente » Cod sursa (job #2055893) | Cod sursa (job #1037808) | Cod sursa (job #583418) | Cod sursa (job #2018861) | Cod sursa (job #2257140)
#include <bits/stdc++.h>
using namespace std;
int main()
{
ifstream fin ("ssm.in");
ofstream fout ("ssm.out");
int n, indiceStart = 0, indiceStartBest, indiceFinishBest;
long long currentBestSum = 0, currentBest = -1000000000;
///currentBestSum -> retine subsecventa de suma maxima care se termina la poz curenta
fin >> n;
for (int i = 1; i <= n; ++i) {
long long currentSum;
fin >> currentSum;
if (currentBestSum > 0) { ///pana la poz i - 1 am o suma pozitiva
currentSum += currentBestSum;
}
else {
indiceStart = i;
}
if (currentBest < currentSum) {
currentBest = currentSum;
indiceStartBest = indiceStart;
indiceFinishBest = i;
}
currentBestSum = currentSum;
}
fout << currentBest << ' ' << indiceStartBest << ' ' << indiceFinishBest;
return 0;
}
/// valori: 2 1 5 -10 5 6
/// CBS : 0 2 3 8 -2 5
/// CS : 2 3 8 -2 5 11
///CB = 11