Cod sursa(job #1321311)

Utilizator deea101Andreea deea101 Data 18 ianuarie 2015 23:34:02
Problema Subsecventa de suma maxima Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <vector>
#include <fstream>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");


pair <int, pair <int, int> > determine ( vector <int> &s)
{
    int i, n=s.size();
	pair <int, int> sol,soltemp;
	int temps=s[1];
	soltemp.first=soltemp.second=1;
	int best=s[1];
	sol=soltemp;
	
	s.insert(s.begin(),0);
    for(i=2;i<=n;i++)
    {
        if(temps<0)
		{
			if(s[i]>temps)
			{
				temps=s[i];
				soltemp.first=soltemp.second=i;
			}
		}
        else
		{
			temps+=s[i];
			soltemp.second=i;
		}
        if(temps>best) 
		{
			best=temps;
			sol=soltemp;
		}
    }
    return make_pair(best,sol);
}

vector <int> s;
int main()
{
	int n,x;
	f>>n;
	for(int i=1;i<=n;i++)
	{
		f>>x;
		s.push_back(x);
	}
	int sum=0;
	pair < int , pair <int,int> > sol;
	sol=determine(s);
	
	g<<sol.first<<' ';
	g<<sol.second.first<<' '<<sol.second.second;
}