Pagini recente » Cod sursa (job #1385276) | Cod sursa (job #3218138) | Cod sursa (job #1469559) | Cod sursa (job #2553183) | Cod sursa (job #2794379)
#include<iostream>
#include<fstream>
using namespace std;
fstream fin("ssm.in");
ofstream fout("ssm.out");
int 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, max_sum;
fin >> n;
int a[n];
for(int i=0; i<n; i++)
fin >> a[i];
max_sum=maxSubArraySum(a, n);
return 0;
}