примерный вариант я писал, только немного запутался в циклах, по этому не получалась задача. пришлось по-другому делать... ваш вариант тоже не идеальный, т.к. программа найдет все строки, в которых все элементы положительные, и только потом выдаст на экран номер последней такой строки(у вас проход с конца, по этому эта строка и будет искомой). так что в быстродействии несильно они будут отличатся))Чёто намудрили Вы с всякими "сумами отрицательных элементов", количество элементов в строке то известно, ИМХО наглядней и проще было бы решить задачу " в лоб" что-то типа
...
NomerStroki:=0;
for i:=10 downto 1 do
begin
kol:=0;
for j:=1 to 5 do
if a[i,j]>0 then kol:=kol+1;
if kol=5 then NomerStroki:=i;
end;
writeln('Номер строки: ',NomerStroki);
...
идеально было б останавливать полность проход, когда счетчик будет равен 5 и сразу выводить номер строки.