Zadanie spoj - SIGABRT

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

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

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1