Pagini recente » Profil zavelcasilviu | Cod sursa (job #2557890) | Cod sursa (job #2858301) | Cod sursa (job #1435579) | Cod sursa (job #2430042)
#include <iostream>
#include<fstream>
using namespace std;
#define INT_MIN -999999999
ifstream f("ssm.in");
ofstream g("ssm.out");
int v[6000002],n;
int maxxACUM=0;
int maxxTOTAL=INT_MIN;
int stabilire(int& pi)
{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];pi=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,pi;
for(int i=1;i<=n;i++)
f>>v[i];
if(stabilire(pi)<0){g<<stabilire(pi)<<" "<<pi<<" "<<pi;}
else {g<<kadane(pif,pff)<<" ";
g<<pif<<" "<<pff<<" ";}
f.close();
g.close();
return 0;
}