Cod sursa(job #1345915)

Utilizator ZappaManIosif Adrian-Mihai ZappaMan Data 17 februarie 2015 22:09:22
Problema Subsecventa de suma maxima Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
typedef int ull;


vector<ull> ssm(vector<ull> & vect) {
	ull max_sum = 0;
	ull max_left, max_right;
	ull cur_left, cur_right;
	max_left = -1;
	max_right = -1;
	cur_left = cur_right = 0;
	ull cur_sum = 0;
	for (int i = 0; i < vect.size(); ++i) {
		cur_sum += vect[i];
		cur_right = i;
		if (cur_sum > max_sum) {
			max_sum = cur_sum;
			max_left = cur_left;
			max_right = cur_right;
		} else if (cur_sum < vect[i]) {
			cur_sum = vect[i];
			cur_left = i;
			cur_right = i;
		}
	}
	vector<ull> res;
	res.push_back(max_sum);
	res.push_back(max_left + 1);
	res.push_back(max_right + 1);
	return res;
}


int main(void) {
	ifstream iff("ssm.in");
	ofstream off("ssm.out");
	int n;
	iff >> n;
	vector<ull> vect;
	while (n--) {
		ull val;
		iff >> val;
		vect.push_back(val);
	}
	vector<ull> out = ssm(vect);
	for (int i = 0; i < out.size(); ++i) {
		off << out[i] << " ";
	}
	return 0;
}