Pagini recente » Cod sursa (job #2761888) | Cod sursa (job #676206) | Cod sursa (job #2382620) | Cod sursa (job #2422423) | Cod sursa (job #2430039)
#include <iostream>
#include<fstream>
using namespace std;
#define INT_MIN -9999999
ifstream f("ssm.in");
ofstream g("ssm.out");
int v[6000000],n;
int maxxACUM=0;
int maxxTOTAL=INT_MIN;
int stabilire()
{int ok=0,maxx=-999999999;
for(int i=1;i<=n;i++)
{
if(v[i]>0)ok=1;
else if(v[i]>maxx)maxx=v[i];
}
if(ok==1) return 1;
else return maxx;
}
int kadane(int &pif,int &pff)
{ int pi=1;
for(int i=1;i<=n;i++)
{
maxxACUM+=v[i];
if(maxxACUM<0){maxxACUM=0;
pi=i+1;
}
else if(maxxACUM>maxxTOTAL)
{maxxTOTAL=maxxACUM;
if(pi!=pif)
{
pif=pi;
pff=pi;
}
else
pff+=i-pff;
}
}
return maxxTOTAL;
}
int main()
{
f>>n;
int pif=0,pff=0;
for(int i=1;i<=n;i++)
f>>v[i];
if(stabilire()<0)g<<stabilire();
else g<<kadane(pif,pff)<<" ";
g<<pif<<" "<<pff<<" ";
f.close();
g.close();
return 0;
}