Pagini recente » Cod sursa (job #2785814) | Diferente pentru planificare intre reviziile 59 si 131 | Cod sursa (job #2504377) | Diferente pentru heapuri intre reviziile 50 si 129 | Cod sursa (job #1588797)
#include <iostream>
#include<fstream>
using namespace std;
int v[6000000];
int s[6000000];
int main()
{
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int n;
fin>>n;
for(int i=0;i<n;i++)
{
fin>>v[i];
}
s[0]=v[0];
for(int i=1;i<n;i++)
{
if(v[i]+s[i-1]>v[i])
{
s[i]=v[i]+s[i-1];
}
else
{
s[i]=v[i];
}
}
int max=-1;
int ret;
for(int i=0;i<n;i++)
{
if(s[i]>max)
{
max=s[i];
ret=i;
}
}
int suma=0;
int i=ret;
while(suma<s[ret])
{
suma+=v[i];
i--;
}
fout<<s[ret]<<" "<<i+1<<" "<<ret+1;
}