Cod sursa(job #2907095)

Utilizator BadBoyRADULICEA Constantin Dumitru Petre BadBoy Data 28 mai 2022 18:35:27
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include<stdio.h>
#include <iostream>
#include <fstream>
#include <vector>

// https://infoarena.ro/problema/ssm 
int main()
{
	std::vector<int> nums;
	int n_nums, i, best_start_seq, best_end_seq, cur_start_seq, cur_sum, best_sum;
	std::ifstream fin("ssm.in");
	std::ofstream fout("ssm.out");

	fin >> n_nums;
	nums.resize(n_nums);
	for (int i = 0; i < n_nums; i++)
		fin >> nums[i];

	best_start_seq = 0;
	cur_sum = 0;
	best_sum = 0;
	cur_start_seq = 0;

	for (i = 0; i < n_nums; i++)
	{
		if (cur_sum < 0) {
			cur_sum = nums[i];
			cur_start_seq = i;
		}
		else cur_sum += nums[i];
		if (best_sum < cur_sum)
		{
			if (i + 1 < n_nums)
			{
				if (nums[i + 1] < 0)
				{
					best_sum = cur_sum;
					best_start_seq = cur_start_seq;
					best_end_seq = i;
				}
			}
			else
			{
				best_sum = cur_sum;
				best_start_seq = cur_start_seq;
				best_end_seq = i;
			}

		}
	}
	printf("Sum: %d\n", best_sum);
	printf("Start: %d\n", best_start_seq + 1);
	printf("end: %d\n", best_end_seq + 1);
	fout << best_sum << ' ';
	fout << best_start_seq + 1 << ' ';
	fout << best_end_seq + 1 << ' ';
	return 0;
}