Cod sursa(job #2409545)

Utilizator Vlad1234Silaghi Vlad Vlad1234 Data 19 aprilie 2019 10:46:17
Problema Subsecventa de suma maxima Scor 5
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <iostream>
#include <fstream>

using namespace std;

int indiceStart,v[6000000], indiceFinal, S, maxi, indiceMaxStart, indiceMaxFinal, n;

int ssmax(int v[], int N, int k,int &indiceStart, int &indiceFinal)
{
	int s = 0, sMax = 0;
    for(int i = 0; i < N - k; i++)
    {
    	s = 0;
    	for(int j = k; j < i + k; j++)
    	    s += v[j];
    	if(s > sMax)
    	{
           sMax = s;
           indiceStart = k;
           indiceFinal = i + k;
    	}
    }
    return sMax;
}
int main()
{
    ifstream in ("ssm.in");
    ofstream out ("ssm.out");

    in >> n;
    for(int i = 0; i < n; i++)
        in >> v[i];
    for(int i = 0; i < n; i++)
    {
    	S = ssmax(v, n, i, indiceStart, indiceFinal);
    	if(S > maxi)
    	{
    		maxi = S;
    		indiceMaxStart = indiceStart;
    		indiceMaxFinal = indiceFinal;
    	}
    	else if(S == maxi)
    	{
    		if(indiceFinal - indiceStart + 1 < indiceMaxFinal - indiceMaxStart + 1)
    		{
    			maxi = S;
    		    indiceMaxStart = indiceStart;
    		    indiceMaxFinal = indiceFinal;
    		}
    	}
    }
    out << maxi <<" " << indiceMaxStart + 1 << " " << indiceMaxFinal;
    return 0;
}