Pagini recente » Cod sursa (job #839417) | Cod sursa (job #2827928) | Cod sursa (job #36412) | Cod sursa (job #1870163) | Cod sursa (job #3133007)
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
struct Sum {///suma pe intervalul [begin;end)
int value;
int begin;
int end;
bool operator>(Sum other) const {
if(value == other.value)
return begin < other.begin;
return value > other.value;
}
};
int main() {
int n, x;
Sum sum, sum_max;
fin >> n >> x;
sum_max.value = sum.value = x;
sum_max.begin = sum.begin = 0;
sum_max.end = sum.end = 0;
for(int i = 1; i < n; ++i){
fin >> x;
if(sum.value < 0){
sum.value = 0;
sum.end = sum.begin = i;
}
sum.value += x;
++sum.end;
if(sum > sum_max)
sum_max = sum;
}
fout << sum_max.value << ' ' << sum_max.begin + 1 << ' ' << sum_max.end - 1 + 1
<< '\n'; // + 1 pentru indexare de la 1
fin.close();
fout.close();
return 0;
}