Pagini recente » Cod sursa (job #1314172) | Cod sursa (job #1661212) | Cod sursa (job #2880666) | Cod sursa (job #1224927) | Cod sursa (job #2794385)
#include<iostream>
#include<fstream>
using namespace std;
fstream fin("ssm.in");
ofstream fout("ssm.out");
void maxSubArraySum(int a[], int n) /// kadane's algorithm + rememembering the indices of the element
{
int max_global, max_current, st, dr, s;
max_global=max_current=a[0];
st=dr=s=0; /// s este indicele de la care incepe subsirul pe care il testaza
for(int i=1; i<n; i++)
{
if(a[i]>max_current+a[i])
{
max_current=a[i];
s=i;
}
else
{
max_current=max_current+a[i];
}
if (max_current>max_global)
{
max_global = max_current;
st = s;
dr = i;
}
}
fout << max_global << ' ' << st+1 << ' ' << dr+1; /// +1 pt ca problema are indicii de la 1
}
int main()
{
int n;
fin >> n;
int a[n];
for(int i=0; i<n; i++)
fin >> a[i];
maxSubArraySum(a, n);
return 0;
}