Когда я запускаю этот код C++, я получаю ошибку времени выполнения «SIGFPE» на Codechef. Как решить эту проблему?

avatar
Kuntal Manna
9 августа 2021 в 05:30
153
0
1

/* Когда я запускаю этот код C++, я получаю ошибку выполнения "SIGFPE" на Codechef. Как решить эту проблему?

Пояснение

Тестовый пример 1 : Оптимальное заполнение [5,0,5,0,5,0,5,0,5,0]

Тестовый пример 2 : Оптимальное заполнение [6,6,5,6,6,0,6,6]

Тестовый пример 3 : Оптимальное заполнение [2,1,2]. */

#include <bits/stdc++.h>
#include <iostream>
#include <array>
using namespace std;
int main()
{
   int T;
   cin >> T;
   while (T--)
   {
       int n, m;
       cin >> n >> m;
       int arr[n+1];
       memset(arr,0,(n+1)*sizeof(int));

       int x[m], y[m];
       for (int i = 0; i < m; i++)
       {
           cin >> x[i] >> y[i];
       }

       vector<pair<int, int>> myvector;
       for (int i = 0; i < m; i++) {
           myvector.push_back(make_pair(x[i], y[i]));
       }

       sort(myvector.begin(), myvector.end());
       int j=0;
       int i=1;
       do
       {
          int i=1;
          do
           {
               if (i % myvector[j].second != 0)
               {
                   arr[i] = myvector[j].first;
               }
               i++;
           }while (i<=n);
           j++;
       }while(j<m);

       int sum = 0;
       for (int i : arr)
       {
           sum += i;
       }
       cout << sum << endl;
   }
   return 0;
}
Источник
Suthiro
9 августа 2021 в 05:45
0

Чего вы пытаетесь достичь? Также, пожалуйста, предоставьте минимальный воспроизводимый пример.

WhozCraig
9 августа 2021 в 05:51
1

int arr[n+1]; не соответствует стандарту C++ и является рецептом для автоматического удаления переменных в нестандартных реализациях, которые предоставляют его в качестве расширения. Аналогично для int x[m], y[m]; Используйте векторы.

churill
9 августа 2021 в 05:52
1

SIGFPE может быть вызван делением на ноль, например, в if (i % myvector[j].second != 0), если myvector[j].second равно 0. Похоже, самое время научиться пользоваться отладчиком.

U. Windl
9 августа 2021 в 08:17
0

«SIGFPE» означает «Исключение с плавающей запятой». Вы можете запустить программу в отладчике (с включенными символами отладки), а затем ожидать, что локальные переменные изолируют проблему. Тогда, может быть, как конкретный вопрос.

Ответы (0)