Софтуерно Инженерство
Loading...
+ Нов въпрос
debono avatar debono 56 Точки

Задача Pairs by Difference от Arrey - оптимизиране на код.

Колеги, пускам линк към кода ми за решаване на задачата Pairs by Difference от Arreys упражненията.

https://pastebin.com/BpH8GeBk

Тъй като Judge ми дава TimeLimit  на последните два теста, искам да попитам дали кодът може да бъде опримизиран за 100 точки. Знам, че с два foreach цикъла ще мине, но ми е интересно дали може да се пипне нещо, което до ускори изпълнението при големи входове.

 

Поздравиyes 

0
Programming Fundamentals
icowwww avatar icowwww 958 Точки
Best Answer

Премахни Math.Abs от 23 ред  if (Math.Abs(arr[i] - arr[j]) == difference)

Промени го на  if (arr[i] - arr[j] == difference || arr[j] - arr[i] == difference)

А иначе има грешка в джъдж не би трябвало да ти търси чак толкова от теб. А и като имаме предвид задачата на първа и на втора група в джъдж става малко нечестно едното да има лимит 100 другото 400:

https://image.prntscr.com/image/agdwJgV1SfeMdTS2ma1Hug.jpg

0
10/10/2017 23:34:21
debono avatar debono 56 Точки

Благодаря за коментара!! Не предполагах, че един Math.Abs ти вдига двойно времето за изпълнение. Иначе, да, втора група е дискриминирана, ама така ще вдигнем левъла по-бързоlaugh

0
icowwww avatar icowwww 958 Точки

xaxa

0
boykopk avatar boykopk 146 Точки

Може да  се премахне едната разлика и пак ще мине.

if (arr[i] - arr[j] == difference)

0