Pagini recente » Cod sursa (job #2186548) | Cod sursa (job #147331) | Cod sursa (job #1680414) | Cod sursa (job #84772) | Cod sursa (job #1232382)
#include <algorithm>
#include <fstream>
#include <limits.h>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
long long m,bl,l,br,s,p,maxs,maxp,i,mi,j;
long long a[6000001],sum[6000001],best[6000001];
int ssecv(int l, int r) {
if (l == r) return a[l];
long mid = (l + r) / 2;
long long bestL = ssecv(l, mid);
long long bestR = ssecv(mid + 1, r);
long long suf = 0;
long long pre = 0;
long long maxSuf = LLONG_MIN;
long long maxPre = LLONG_MIN;
for (long i = mid; i >= l; i--) {
suf += a[i];
if (maxSuf < suf) maxSuf = suf;
}
for (long i = mid + 1; i <= r; i++) {
pre += a[i];
if (maxPre < pre) maxPre = pre;
}
max(bestL, max(bestR, maxPre + maxSuf));
g<<bestR<<' '<<bestL<<endl;
}
int main()
{
long n;
sum[0]=0;
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
for(i=1;i<=n;i++)
sum[i]=a[i]+sum[i-1];
mi=sum[0];
long long bestSum=LLONG_MIN;
for(i=1;i<=n;i++)
{
best[i]=sum[i]-mi;
if(mi>sum[i]) {mi=sum[i];
j=i+1;}
if(bestSum<best[i]) {bestSum=best[i];
m=i;
}
}
g<<bestSum<<" "<<j<<" "<<m<<endl;
return 0;
}