Pagini recente » Borderou de evaluare (job #704136) | Borderou de evaluare (job #706562) | Cod sursa (job #1260958) | Cod sursa (job #767545)
Cod sursa(job #767545)
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
void citire ( int &);
void ssm (int,int );
int v[6000000];
int main()
{
int n;
citire(n);
ssm (1,n);
//fout<<n;
return 0;
}
void ssm ( int a, int b)
{
int i,j,best[b-a+6],maxim,imaxs=a,istart=a,imaxsf=a;
best[a]=v[a];
maxim=v[a];
for (i=a+1;i<=b;i++)
{
best[i]=max(v[i],best[i-1]+v[i]);
if (v[i]>best[i-1]+v[i])
{
istart=i;
}
if(best[i-1]>maxim)
{
imaxs=istart;
imaxsf=i-1;
maxim=best[i-1];
}
}
if (maxim>best[b])
fout<<maxim<<" "<<imaxs<<" "<<imaxsf;
else
fout<<best[b]<<" "<<istart<<" "<<b;
}
void citire (int &n)
{
int i;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>v[i];
}
}