Pagini recente » Cod sursa (job #1669885) | Cod sursa (job #2296781) | Cod sursa (job #1758202) | Cod sursa (job #633815) | Cod sursa (job #3351102)
// https://infoarena.ro/problema/ssm
#include<fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int main() {
int n, v;
fin >> n;
int sumMax = 0; // suma maxima
int sum = 0; // suma sevcentei candidat
int posInceputSumMax; // pozitia de la care incepe subsecventa de suma maxima
int posSfarsitSumMax; // pozitia la care se termina subsecventa de suma maxima
int posInceputSum = 1;
for(int i = 1; i <= n; i++) {
fin >> v;
sum += v;
if(sum > sumMax) {
sumMax = sum;
posInceputSumMax = posInceputSum;
posSfarsitSumMax = i;
}
if(sum < 0) {
sum = 0;
posInceputSum = i+1; // incepe o noua subsecventa candidat pentru subsecventa de suma maxima
}
}
fout << sumMax << " " << posInceputSumMax << " " << posSfarsitSumMax << endl;
fin.close();
fout.close();
return 0;
}