Pagini recente » Cod sursa (job #1025059) | Cod sursa (job #2198455) | Cod sursa (job #529092) | Cod sursa (job #507053) | Cod sursa (job #762138)
Cod sursa(job #762138)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
int v[6000001];
int n;
int sMax;
int L,R;
void F(int li, int ls)
{
int l,r;
int s1 = 0;
int s2 = 0;
int lMax = 0;
int rMax = 01;
int mid = (li + ls)/2;
int i;
if(li == ls) {
if(sMax < v[li])
sMax = v[li];
return;
}
F(li,mid);
F(mid+1,ls);
for(i = mid; i >= li; i--) {
s1 += v[i];
if(lMax < s1) {
lMax = s1;
l = i;
}
}
for(i = mid + 1; i <= ls; i++) {
s2 += v[i];
if(rMax <= s2) {
rMax = s2;
r = i;
}
}
if(sMax <= lMax + rMax) {
sMax = lMax + rMax;
L = l;
R = r;
}
}
int main()
{
int i;
f>>n;
for(i = 1; i <= n; i++) {
f>>v[i];
}
F(1, n);
g<<sMax<<" "<<L<<" "<<R;
}