Pagini recente » Borderou de evaluare (job #2511368) | Borderou de evaluare (job #2311368) | Cruce | Cod sursa (job #3361563) | Cod sursa (job #3361565)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
long long v[6000001];
int main() {
int n, i, primul, ultimul, indiceSt;
long long sum, mx;
fin >> n;
for(i = 1; i <= n; i++)
fin >> v[i];
sum = v[1];
mx = v[1];
indiceSt = 1;
primul = 1;
ultimul = 1;
for(i = 2; i <= n; i++){
if(v[i] > sum + v[i]){
sum = v[i];
indiceSt = i;
}
else{
sum = sum + v[i];
}
if(sum > mx){
mx = sum;
primul = indiceSt;
ultimul = i;
}
else if(sum == mx){
if(indiceSt < primul){
primul = indiceSt;
ultimul = i;
}
else if(indiceSt == primul && i - indiceSt < ultimul - primul){
ultimul = i;
}
}
}
fout << mx << " " << primul << " " << ultimul;
return 0;
}