Pagini recente » Cod sursa (job #1984904) | Cod sursa (job #679299) | Cod sursa (job #3179291) | Borderou de evaluare (job #2772098) | Cod sursa (job #2246270)
#include <fstream>
#include <climits>
using namespace std;
struct vector1
{
int a;
int b;
}S[6000001];
int main()
{
long long int n,x,maxS=LONG_MIN,i,minS=LONG_MAX,imin,imax,aux=0,min1,max1,OK;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
fin>>n;
for (i=1;i<=n;i++)
{
OK=0;
fin>>x;
S[i].a=S[i-1].a+x;
if (S[i].a<=minS)
{
minS=S[i].a;
OK=1;
}
S[i].b=minS;
if (S[i].a-S[i-1].b>maxS)
maxS=S[i].a-S[i-1].b,
min1=aux,
max1=i;
if(OK==1)
aux=i;
}
while (S[min1-1].a==S[min1].a)
{
min1--;
}
fout<<maxS<<" "<<min1+1<<" "<<max1;
fin.close();
fout.close();
return 0;
}