Pagini recente » Cod sursa (job #1108440) | Cod sursa (job #199875) | Cod sursa (job #2136554) | Cod sursa (job #385591) | Cod sursa (job #2907095)
#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;
}