Pagini recente » Cod sursa (job #1025280) | Cod sursa (job #2523532) | Cod sursa (job #207408) | Cod sursa (job #3127876) | Cod sursa (job #640680)
Cod sursa(job #640680)
/*#include <iostream>
#include <stdio.h>
#include <fstream>
using namespace std;
const int nmax=6000001;
int s[nmax];
int main()
{
int i,n,x=0,xi,s1,s2,min1,min2;
ifstream fin("ssm.in");
freopen("ssm.out","w",stdout);
fin>>n;
for(i=1;i<=n;i++)fin>>s[i];
s1=i;
min1=1;xi=1;
for(i=2;i<=n;i++){
if(s1+s[i]>s[i]){
s2=s1+s[i];
min2=min1;
xi++;
}
else {
s1=s[i];
min1=i;
xi=i;}
return 0;
}*/
#include <iostream>
#include <stdio.h>
#include <fstream>
using namespace std;
const int nmax=6000001;
int s[nmax],best[nmax];
int main()
{
int i,n,x=0,xi,k;
ifstream fin("ssm.in");
freopen("ssm.out","w",stdout);
fin>>n;
for(i=1;i<=n;i++)fin>>s[i];
best[1]=s[1];
for(i=2;i<=n;i++){
if(best[i-1]+s[i]>s[i]){
best[i]=best[i-1]+s[i];}
else best[i]=s[i];}
for(i=1;i<=n;i++)if(best[i]>x){x=best[i];xi=i;}
k=s[xi];
i=xi;
int p=0;
while(k!=best[xi]){
i--;k=k+s[i];p++;}
while(best[i] == 0)
p++, i--;
cout<<best[xi]<<" "<<xi-p<<" "<<xi;
return 0;
}