Pagini recente » Cod sursa (job #1995941) | Cod sursa (job #1883331) | Cod sursa (job #2892664) | Cod sursa (job #771508) | Cod sursa (job #1624223)
#include <fstream>
#include <stdlib.h>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
void citire(int n, int *a)
{
for(int i = 1; i <= n; i++)
{
f>>a[i];
}
}
int main()
{
int n,smax,pi;
int *a,*dp;
f>>n;
a = (int*)malloc(sizeof(int) * (n + 1));
dp = (int*)malloc(sizeof(int) * (n + 1));
citire(n,a);
for(int i = n; i >= 1; i--)
{
if(i == n)
{
smax=a[i];
dp[i]=a[i];
pi=i;
continue;
}
if(dp[i+1]+a[i] > 0)
{
dp[i]=dp[i+1]+a[i];
if(smax<dp[i])
{
smax=dp[i];
pi = i;
}
}
else
{
if(a[i]>dp[i+1])
{
dp[i] = a[i];
smax=dp[i];
pi=i;
}
else
{
dp[i]=dp[i+1];
smax=dp[i];
}
}
}
g<<smax<<" "<<pi;
int ok = 0,s=0;
for(int i = pi; i <=n && ok == 0; i++)
{
s+=a[i];
if(s==smax)
{
g<<" "<<i;
ok = 1;
}
}
f.close();
g.close();
return 0;
}