#include<stdio.h>
int main(void)
{
int n;
scanf("%d",&n);
int a[n];
int i=0,max=-999,temp=0,j=0;
int first,last;
first=last=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
temp=0;
for(j=i;j<n;j++)
{
temp+=a[j];
if(temp>max)
{
first=a[i];
max=temp;
last=a[j];
}
}
}
printf("%d %d %d\n",max,first,last);
return 0;
}
https://pintia.cn/problem-sets/1498095307925921792/problems/1498095387897106434
供参考:
#include <stdio.h>
#include <malloc.h>
int main(void)
{
int n, i, maxsum = -1, sum = 0;
int first = 0, last = 0, tmp = 0;
scanf("%d", &n);
int* a = (int*)malloc(sizeof(int) * n); //int a[n];
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i < n; i++)
{
sum += a[i];
if (sum > maxsum){
maxsum = sum;
first = tmp;
last = i;
}
else if (sum < 0) {
sum = 0;
tmp = i + 1;
}
}
if (maxsum == -1)
printf("%d %d %d\n", 0, a[0], a[n - 1]);
else
printf("%d %d %d\n", maxsum, a[first], a[last]);
return 0;
}