Pagini recente » Diferente pentru preoni-2008/runda-1/solutii intre reviziile 23 si 24 | Clasament dupa rating | Monitorul de evaluare | Istoria paginii utilizator/stancuflorin | Cod sursa (job #1292384)
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream in("ssm.in");
ofstream out("ssm.out");
int N;
in >> N;
vector <int> s(N + 1, 0);
for (int i = 1; i <= N; ++i) {
in >> s[i];
}
for (int i = 1; i <= N; ++i) {
s[i] = s[i] + s[i - 1];
}
vector <int> d(N + 1, 0);
int mn = 0;
for (int i = 1; i <= N; ++i) {
d[i] = s[i] - mn;
mn = min(mn, s[i]);
}
int mx = - (1 << 30);
int mx_pos = N + 1;
for (int i = N; i > 0; --i) {
if (d[i] >= mx) {
mx = d[i];
mx_pos = i;
}
}
vector <int> res;
int start = mx_pos - 1;
int mn_pos = mx_pos + 1;
for (int i = mx_pos - 1; i > 0; --i) {
if (s[mx_pos] - s[i] == d[mx_pos]) {
mn_pos = i;
}
}
out << d[mx_pos] << " " << mn_pos + 1 << " " << mx_pos << "\n";
in.close();
out.close();
return 0;
}