Не сходится с ответом
У меня выводится все '-1', лишь в одном случае выдает 18. При введенных значениях, которые написаны в примере (ниже задача). А мне надо исключительно, чтобы выдавало 18. Как это сделать и где моя ошибка?
var
a: array[1..10000] of integer;
N, i, j, x: integer;
begin
x := -1;
readln(N);
for i := 1 to N do
readln(a[i]);
for i := 1 to N - 1 do
for j := i + 1 to N do
begin
if ((a[i] + a[j]) mod 3 = 0) and ((i + j) mod 3 = 0) and ((a[i] + a[j]) > x) then
x := a[i] + a[j];
end;
for i := 1 to N - 1 do
for j := i + 1 to N do
if ((a[i] + a[j]) mod 3 = 0) and ((i + j) mod 3 = 0) and ((a[i] + a[j]) >= x) then begin
writeln(x);
end
else
writeln('-1');
end.
На вход программы поступает последовательность из N целых положительных чисел. Рассматриваются все пары различных элементов последовательности (элементы пары не обязаны стоять в последовательности рядом, порядок элементов в паре неважен). Необходимо определить такую максимальную сумму элементов пары, чтобы суммы элементов пары и их индексов были кратны 3. Если такой суммы не найдется, вывести «–1». Нумерация элементов начинается с 1. Описание входных и выходных данных В первой строке входных данных задаётся количество чисел N (1 ≤ N ≤ 10000). В каждой из последующих N строк записано одно натуральное число, не превышающее 10000. В качестве результата программа должна вывести одно число: максимальную сумму пары кратную трём с суммой индексов кратной трём или «–1», если такой пары не нашлось. Пример входных данных №1: 10 1 2 3 4 5 6 7 8 9 10 Выходные данных для приведенного выше примера: 18 найденная пара: (8; 10)
Ответы (1 шт):
Уберите последние for i for j и оставьте тупо writeln(x); оно и так выведет -1 если таковых нет.