Pagini recente » Cod sursa (job #2811736) | Cod sursa (job #2982544) | Cod sursa (job #2481751) | Cod sursa (job #153841) | Cod sursa (job #1332004)
#include <limits.h>
#include <cstdio>
using namespace std;
int main()
{
freopen("ssm.in", "r", stdin);
freopen("ssm.out", "w", stdout);
int X;
int best_begin = -1;
int best_end = -1;
int best_sum = 0;
int current_begin = -1;
int current_sum = 0;
int max_negative_value = INT_MIN;
int max_negative_position = -1;
int N; scanf("%d", &N);
for (int i = 0; i < N; i++)
{
scanf("%d", &X);
if (X <= 0)
{
if (X > max_negative_value)
{
max_negative_value = X;
max_negative_position = i;
}
}
int candidate_sum = current_sum + X;
if (candidate_sum > 0)
{
if ((current_sum == 0) && (X != 0))
{
current_begin = i;
}
current_sum = candidate_sum;
}
else
{
current_sum = 0;
}
if (current_sum > best_sum)
{
best_sum = current_sum;
best_begin = current_begin;
best_end = i;
}
}
if (best_begin == -1)
{
printf("%d %d %d", max_negative_value, max_negative_position + 1, max_negative_position + 1);
}
else
{
printf("%d %d %d", best_sum, best_begin + 1, best_end + 1);
}
return 0;
}