Pagini recente » Cod sursa (job #2558734) | Cod sursa (job #310685) | Cod sursa (job #2730984) | Cod sursa (job #2539169) | Cod sursa (job #2725010)
#include <fstream>
using namespace std;
int v, s;
/// s[i] = suma maxima a unei secvente care se incheie pe pozitia i
/// o formez fie luand singur elementul de pe pozitia i
/// fie alipindu-l la suma maxima care se termina pe pozitia anterioara
int n, i, p, maxim, pMaxim, uMaxim;
int main () {
ifstream fin ("ssm.in");
ofstream fout("ssm.out");
fin>>n;
maxim = (1<<31) + 1;
for (i=1;i<=n;i++) {
fin>>v;
if (v + s >= v)
s = v+s;
else {
s = v;
p = i;
}
if (s > maxim) {
maxim = s;
pMaxim = p;
uMaxim = i;
}
}
fout<<maxim<<" "<<pMaxim<<" "<<uMaxim;
return 0;
}