7-2 Maximum Subsequence Sum (25 分)第四个全是负数的为什么过不了

#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;
}