не сходится ответ с задачей

var
a: array[1..10000] of integer;
N, i, j, l, m, x, b: integer;

 begin
x := -10001;
readln(N);
for i := 1 to N do
 readln(a[i]);
for i := 1 to N - 3 do
begin
  for j := i + 1 to N - 2 do
    for l := j + 1 to N - 1 do
     for m := l + 1 to N do
       b := a[i] + a[j] + a[l] + a[m];
end;
if (b > x) and (b mod 2 = 0) then begin
x := b;
writeln(x)
end
else writeln('Не найдено');
end.

). На вход программы поступает последовательность из N целых чисел (4 ≤ N ≤ 1000). Необходимо определить из данного ряда 4 числа таких, что их сумма будет четной и максимальной. Если такой суммы не нашлось, то вывести сообщение «Не найдено». Допускается сохранение всей последовательности в массиве с последующим перебором всевозможных вариантов. Описание входных и выходных данных В первой строке входных данных задается количество чисел N. В каждой из последующих N строк записано одно целое число в диапазоне от –100 до 100. В качестве ответа программа должна вывести максимальную четную сумму или сообщение «Не найдено». Пример входных данных: 8

-13 15

-3

-10

Пример выходных данных для приведенного выше примера входных данных:

Мой ответ: Не найдено. Ответ задачи: -2. В чём моя ошибка?


Ответы (1 шт):

Автор решения: Alex R.

Всегда форматируйте код. Отделяйте блоки пустыми строками.

Посмотрите код ниже (форматированный и неисправленный), основное условие находится вне цикла и выполняется только для последнего b, а должно для каждого.

var
  a: array[1..10000] of integer;
  N, i, j, l, m, x, b: integer;
begin
  x := -10001;
  readln(N);

  for i := 1 to N do
    readln(a[i]);

  for i := 1 to N - 3 do
    begin
      for j := i + 1 to N - 2 do
        for l := j + 1 to N - 1 do
          for m := l + 1 to N do
            b := a[i] + a[j] + a[l] + a[m];
    end;

  if (b > x) and (b mod 2 = 0) then 
    begin
      x := b;
      writeln(x)
    end
  else 
    writeln('Не найдено');
end.

В конце надо проверить что x <> -10001.

→ Ссылка