Cod sursa(job #1334406)

Utilizator atoaderAlexandru Toader atoader Data 4 februarie 2015 12:56:20
Problema Subsecventa de suma maxima Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <vector>
#include <numeric>

using namespace std;
void read(vector<int>& out_data){
	ifstream f("ssm.in");
	int N, x;
	f >> N;
	for (int i = 0; i < N; i++){		
		f >> x;
		out_data.push_back(x);
	}

	f.close();
}

void write(int maxSum, int minIdx, int maxIdx){
	ofstream g("ssm.out");
	g << maxSum << " " << minIdx << " " << maxIdx << std::endl;
	g.close();
}

void computeMaxSum(const vector<int>& data,int& out_maxSum, int& out_minIdx, int& out_maxIdx){
	unsigned i, j;
	const unsigned SIZE = data.size();
	out_maxSum = data[0];
	out_minIdx = 0;
	out_maxIdx = 0;

	for (i = 0; i < SIZE - 1; ++i){
		int sum = 0;
		for (j = i; j < SIZE; ++j){
			sum += data[j];
			if (sum > out_maxSum){
				out_maxSum = sum;
				out_minIdx = i;
				out_maxIdx = j;				
			}
		}
	}
}

int main(){
	vector<int> data;
	int maxSum, minIdx, maxIdx;
	
	read(data);

	computeMaxSum(data, maxSum, minIdx, maxIdx);

	write(maxSum, minIdx+1, maxIdx+1);

	return 0;
}