Pagini recente » Cod sursa (job #2662721) | Cod sursa (job #590364) | Cod sursa (job #2230798) | Cod sursa (job #2284441) | Cod sursa (job #328558)
Cod sursa(job #328558)
#include<fstream>
#define N 6000001
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int s[N],i,st,dr,bestSum,beg,n,best[N];
int main()
{ fin>>n;
for(i=1;i<=n;i++) fin>>s[i];
bestSum=s[1];beg=1;st=1;dr=1;
for(i=1;i<=n;i++)
{ best[i]=s[i]; //presupunem ca incepem o secventa noua
if(best[i]<best[i-1]+s[i]) //daca putem continua vechea secventa
best[i]=best[i-1]+s[i]; //adunam elemntul curent
else{
if(s[i-1]==0)beg=i-1; //altfel initializam indicele stang pentru nou secventa
else beg=i;
}
if(bestSum<best[i]) //daca am obtinut o suma mai mare facem modificarile necesare
{ bestSum=best[i];
st=beg;
dr=i;
}
}
fout<<bestSum<<' '<<st<<' '<<dr;
return 0;
}