Cod sursa(job #3292239)

Utilizator the_tortoiseTecuceanu Gabriel-Cristian the_tortoise Data 7 aprilie 2025 18:07:45
Problema Subsecventa de suma maxima Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;

void solve(vector<int> vec, int n)
{
	vector<int> dp(n + 1, 0);
	vector<int> pos(n + 1, 0);
	dp[0] = vec[0];

	for (int i = 1; i < n; ++i) {
		if (dp[i - 1] >= 0) {
			dp[i] = dp[i - 1] + vec[i];
			pos[i] = pos[i - 1];
		} else {
			dp[i] = vec[i];
			pos[i] = i;
		}
	}

	int max = dp[0];
	int a, b;
	for (int i = 1; i < n; ++i)
		if (max < dp[i]) {
			max = dp[i];
			a = pos[i];
			b = i;
		}

	ofstream out("ssm.out");
	out << max << ' ' << a + 1 << ' ' << b + 1 << '\n';
	out.close();
}

int main(void)
{
	int n;
	vector<int> vec;

	ifstream in("ssm.in");
	in >> n;
	for (int i = 0, x; i < n; i++) {
		in >> x;
		vec.push_back(x);
	}
	in.close();

	solve(vec, n);

	return 0;
}