На вводе n и a_i-х выдаётся ошибка out of range, ч...
생성일: 2026년 10월 24일
답변에 사용된 모델 GPT-5.6 Thinking by Chat01
생성일: 2026년 10월 24일
답변에 사용된 모델 GPT-5.6 Thinking by Chat01
На вводе n и a_i-х выдаётся ошибка out of range, что может быть не так?
Проблема у тебя в функции derevo() — в базовом случае не хватает return.
Сейчас:
cppif (i == j) { d[v] = a[i]; } int mid = (i + j) / 2; derevo(v * 2, i, mid); derevo(v * 2 + 1, mid + 1, j);
Когда i == j, ты записываешь d[v] = a[i], но функция продолжает выполняться. Например, если i = j = 0, то:
cppmid = 0; derevo(v * 2, 0, 0);
и это повторяется снова и снова: v → 2v → 4v → 8v.... В какой-то момент обращение к d[v] выходит за границы вектора.
Исправь так:
cppvoid derevo(int v, int i, int j) { if (i == j) { d[v] = a[i]; return; } int mid = (i + j) / 2; derevo(v * 2, i, mid); derevo(v * 2 + 1, mid + 1, j); d[v] = d[v * 2] + d[v * 2 + 1]; }
Либо через else.
Ещё стоит проверить n == 0, потому что тогда:
cppderevo(1, 0, n - 1);
превратится в derevo(1, 0, -1). Если по условию n >= 1, это не проблема.
Главная ошибка на скрине — отсутствие return после if (i == j).