Получение кода завершения ошибки времени выполнения 1 в этом коде, который дает правильный вывод и находится в пределах памяти и времени - PullRequest
0 голосов
/ 07 апреля 2020

Ниже написанный код прекрасно работает в VS C, однако при отправке его в codeforces я получаю код завершения ошибки времени выполнения 1.

Ссылка на проблему: https://codeforces.com/problemset/problem/1326/B

    #include<stdio.h>


     void main()
     {
        int n;
        scanf("%d\n",&n);
        int b[n],a[n],max=0,i;
        for(i=0;i<n;i++)
        {
          scanf("%d",&b[i]);
        }
        a[0]=b[0];
        a[1]=b[1]+a[0];
        max=a[1]>a[0]?a[1]:a[0];
        for(i=2;i<n;i++)
        {
            a[i]=b[i]+max;
            max=a[i]>max?a[i]:max;
         }
         for(i=0;i<n;i++)
             printf("%d ",a[i]);

    }

Для пользовательского ввода:

5

0 1 1 -2 1

Выход:

0 1 2 0 3 

Ошибка времени выполнения: код выхода 1

Используется: 31 мс, 0 кб

1 Ответ

0 голосов
/ 07 апреля 2020

Поскольку ввод может быть очень большим, программа приводит к ошибке сегментации, когда заданное значение n очень велико. Не статически размещайте массивы a и b, вместо этого используйте функцию mallo c для выделения памяти

int *a, *b;
a = (int *)malloc(sizeof(int) * n);
b = (int *)malloc(sizeof(int) * n);

Также объявите main как int main и верните 0 в конце вместо void main

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...