Cod sursa(job #649441)

Utilizator andreioneaAndrei Onea andreionea Data 16 decembrie 2011 01:55:58
Problema Subsecventa de suma maxima Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#include <vector>
#define INFILE "ssm.in"
#define OUTFILE "ssm.out"
using namespace std;
int main()
{
	vector<int> v;
	int n;
	ifstream fin(INFILE);
	ofstream fout(OUTFILE);
	fin >> n;
	int k;
	for (int i = 0; i < n ; ++i) {
		fin >> k;
		v.push_back(k);
	}
	
	fin.close();
	
	int maxfirstpos = 0;
	int firstpos = 0;
	int lastpos = 0;
	int max = v[0];
	int sum = 0;
	int i = 0;
	for(vector<int>::iterator it = v.begin(); it != v.end(); ++it, ++i) {
		if(sum == 0)
			firstpos = i; 
		sum += *it;
		if (sum < 0)
			sum = 0;
		if (sum > max) {
			lastpos = i;
			maxfirstpos = firstpos;
			max = sum;
		}
	}
	fout << max << " " << maxfirstpos + 1 << " " << lastpos + 1;
	fout.close();
	return 0;
}