Pagini recente » Cod sursa (job #989737) | Cod sursa (job #1208769) | Cod sursa (job #1793818) | Cod sursa (job #2961589) | Cod sursa (job #1640885)
#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];
}
else
{
dp[i] = a[i];
}
if(smax < dp[i])
{
smax=dp[i];
pi=i;
}
g<<"dp[i+1]:"<<dp[i+1]<<" dp[i]:"<<dp[i]<<" smax:"<<smax<<" a[i]:"<<a[i]<<"\n";
}
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;
}