Pagini recente » Monitorul de evaluare | Cod sursa (job #311759) | Cod sursa (job #605715) | Cod sursa (job #1428378) | Cod sursa (job #3351103)
// https://infoarena.ro/problema/ssm
#include<fstream>
#include<climits>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int main() {
int n, v;
fin >> n;
int sumMax = -INT_MAX; // suma maxima, initializata cu -INT_MAX, pentru cazurile in care in test exista doar numere negative
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;
}