Форум » Массивы, сортировка, работа с файлами » 2643 Можно ли оптимизировать? » Ответить

2643 Можно ли оптимизировать?

ростик: Ответ получается правильный, но интересно если можно как-нибудь оптимизировать код. [pre2] var n,x,count: integer; a: array of integer; begin assign(input,'\26-j1.txt'); readln(n); setlength(a,n); for var i:=0 to n-1 do begin readln(x); a[ i]:=x; end; Sort(a); for var i:=0 to n-1 do begin for var k:=i+1 to n-1 do begin if a[k]+a[ i] = 100 then begin count+=1; a[ i]:=0; a[k]:=0; end; end; end; print(count); end. [/pre2]

Ответов - 2

Mike_Boone: Если я правильно понимаю ваш код (учитывая, что условия задачи нет), то вы ищите пары, сумма чисел в которых равна 100. Простейшей оптимизацией является бинарный поиск. Если вы берете некоторый элемент a[ i] < 100, то до 100 вам не хватает 100 - a[ i], осталось лишь двоичным поиском попытаться найти его в отсортированном массиве. Если такого элемента нет, то пройти дальше.

ростик: Извиняюсь, что без условия, вот оно: https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=2643 Воспользуюсь вашим предложением в дальнейшем, спасибо!



полная версия страницы