Как устранить ошибку времени выполнения SIGEMT в codechef? - PullRequest
0 голосов
/ 07 апреля 2020

Я получаю ошибку SIGEMT в компиляторе codechef для следующего кода: Он отлично работает, когда я запускаю тот же код в автономном режиме на моем P C. Я прочитал, что это происходит из-за высокого использования памяти long long int, но когда я изменяю его на int, вместо этого я получаю ошибку SIGTSTP, которая указывает на нехватку памяти.

#include <iostream>
using namespace std;

int main() {
    long long int t, i, j, count = 0;
    int flag = 0, gflag = 0;
    cin>>t;
    while(t--) {
        long long int n;
        cin>>n;
        long long int arr[n];
        for(i = 0; i<n; i++) {
            cin>>arr[i];
        }

        for(i = 0; i<n-1; i++) {
            count = 0;
            flag = 0; gflag = 0;
            if(arr[i] == 1) {
                for(j = i+1; j<n; j++) {
                    if(arr[j] == 1) {
                        gflag = 1;
                        break;
                    }
                    count++;
                }
            }

            if(count<5 && gflag == 1) {
                    cout<<"NO\n";
                    flag = 1;
                    break;
            }
        }
        if(flag == 0)
        cout<<"YES\n";
    }
return 0;
}

Пожалуйста, помогите. Спасибо.

1 Ответ

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

SIGEMT Это ловушка эмулятора. Это вытекает из некоторых нереализованных инструкций (то есть вы пытаетесь дать инструкцию, которая не реализована в библиотеке GNU), которые могут быть эмулированы в программном обеспечении, или из-за того, что операционная система не может должным образом эмулировать их.

для пространства памяти Проблема: в блоге codechef упоминался хак, попробуйте объявить переменные перед функцией main (), чтобы вы получили глобальную переменную, объявленную в куче.

https://discuss.codechef.com/t/why-do-i-get-run-time-error-sigemt/15957

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