Pagini recente » Cod sursa (job #1181654) | Cod sursa (job #2511947) | Cod sursa (job #1286642) | Cod sursa (job #2310467) | Cod sursa (job #2652155)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
struct maxSum {
int s, i, j;
};
int max(vector<int>& v) {
int m = 0;
for (int i = 1;i < v.size();++i)
if (v[i] > v[m]) m = i;
return m;
}
maxSum ssm(vector<int>& v) {
int m = max(v);
if (v[m] < 0) return { v[m],m,m };
int n = v.size();
int smax = 0, begin = 0, end = -1;
int i = 0, s = v[0];
for (int j = 1;j < n;++j) {
s += v[j];
while (s < 0)
s -= v[i++];
if (s > smax) {
smax = s;
begin = i;
end = j;
}
}
return { smax,begin,end };
}
int main() {
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int n;
vector<int> v;
fin >> n;
while (n--) {
int x;
fin >> x;
v.push_back(x);
}
maxSum r = ssm(v);
fout << r.s << ' ' << r.i + 1 << ' ' << r.j + 1;
return 0;
}