Cod sursa(job #2794385)

Utilizator whitevader28Albu Alexandru whitevader28 Data 4 noiembrie 2021 19:26:11
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#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;
}