Pagini recente » Cod sursa (job #1539918) | Cod sursa (job #1531763) | Cod sursa (job #358519) | Cod sursa (job #2707547) | Cod sursa (job #1371854)
#include <fstream>
#include <iomanip>
using namespace std;
ofstream out("ssm.out");
int a[6000002];
int n,bestSum,i;
int best[6000002];
bool ok=false;
int x,sum,y;
bool rezolva_usor=false;
void rezolva1()
{
sum = 0;
bestSum = -9999;
x=1;
int y=n;
for (i = 1; i <= n; i++)
{
sum += a[i];
if (sum < 0)
sum = 0,x=i;
else if (sum > bestSum)
bestSum = sum ,y=i;
}
out<<bestSum<<" "<<x+1<<" "<<y;
}
void rezolva2()
{
bestSum = a[1];
x=1;
y=n;
for (i = 1; i <= n; ++ i)
{
best[i] = a[i];
if (best[i] < best[i-1] + a[i])
{
best[i] = best[i-1] + a[i];
if(ok==false)
x=i,ok=true;
}
if (bestSum < best[i])
bestSum = best[i],y=i;
}
out<<bestSum<<" "<<x+1<<" " <<y;
}
int main()
{
freopen("ssm.in","r",stdin);
scanf("%d",&n);
for(i=1; i<=n; i++)
{
scanf("%d",&a[i]);
if(a[i])
rezolva_usor=true;
}
if(rezolva_usor==true)
rezolva1();
else
rezolva2();
return 0;
}