Pagini recente » Cod sursa (job #1543068) | Cod sursa (job #1214722) | Cod sursa (job #668971) | Cod sursa (job #1878812) | Cod sursa (job #1113752)
#include <iostream>
#include <fstream>
#define maxn 6000010
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
int n,v[maxn];
//int s[maxn];
long long best[maxn];
inline int maxim(int a,int b)
{
if(a<b)
return b;
return a;
}
int main()
{
int i,beg=1,sf=1;
in>>n;
// s[0]=0;
for(i=1;i<=n;i++)
{
in>>v[i];
// s[i]=s[i-1]+v[i];
}
long long sol=0;
int ansbeg;
for(i=1;i<=n;i++)
{
if(v[i]<best[i-1]+v[i])
{
best[i]=best[i-1]+v[i];
}
else
{
best[i]=v[i];
beg=i;
}
if(best[i]>sol)
{
sol=best[i];
ansbeg=beg;
sf=i;
}
}
out<<sol<<" "<<ansbeg<<" "<<sf;
/*
int minim=s[1];
best[1]=s[1];
for(i=2;i<=n;i++)
{
if(s[i-1]<minim)
minim=s[i-1];
if(v[i]<0)
best[i]=maxim(s[i]-minim,maxim(s[i],best[i-1]));
else
best[i]=maxim(s[i]-minim,s[i]);
}
int m=best[1],poz=1;
for(i=2;i<=n;i++)
if(best[i]>m)
{
m=best[i];
poz=i;
}
cout<<m<<" ";
best[0]=1<<30;
for(i=poz;i>=1;i--)
{
if(best[i]<best[i-1])
{
cout<<i<<" "<<poz;
return 0;
}
}*/
return 0;
}