Zadanie spoj - SIGABRT

Zadanie spoj - SIGABRT
Cyprian Kamil
  • Rejestracja:ponad 4 lata
  • Ostatnio:7 miesięcy
  • Postów:3
0

Cześć, w jakimkolwiek kompilatorze wszystko mi działa jak powinno przykładowe wejściowe zwracają przykładowe wyjściowe. Niestety SPOJ wywala błąd SIGABRT i nie mam pojęcia co jest nie tak

Kopiuj
#include <iostream>
#include <cmath>

using namespace std;

const int MAX_DEGREE = 10;
const double EPS = 1e-10;

int degree;
double coeffs[MAX_DEGREE + 1];

double f(double x) {
    double result = coeffs[degree];
    for (int i = degree - 1; i >= 0; i--) {
        result = result * x + coeffs[i];
    }
    return result;
}

int main() {
    int num_tests;
    cin >> num_tests;

    double roots[MAX_DEGREE];
    int root_idx = 0;

    while (num_tests--) {
        cin >> degree;
        for (int i = 0; i <= degree; i++) {
            cin >> coeffs[i];
        }

        int num_roots;
        cin >> num_roots;
        while (num_roots--) {
            double a, b;
            cin >> a >> b;
            while (abs(b - a) > EPS) {
                double mid = (a + b) / 2;
                if (f(mid) * f(a) > 0) {
                    a = mid;
                } else {
                    b = mid;
                }
            }
            roots[root_idx++] = (a + b) / 2;
        }
        
    }

    for (int i = 0; i < root_idx; i++) {
        cout << roots[i] << endl;
    }

    return 0;
}
enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:3 dni
  • Postów:1027
2

Skąd założenie, że pierwiastków do szukania może być max tyle co MAX_DEGREE? Np. takie wejście wywala program:

Kopiuj
1
10
1 2 3 4 5 1 2 3 4 5 1
11
1 2
1 2
1 2
1 2
1 2
1 2
1 2
1 2
1 2
1 2
1 2

No ale co mamy zgadywać, daj linka do zadania.

edytowany 1x, ostatnio: enedil

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.