21 / 22
Nov 2021

I tak i nie. Ja zaliczyłem to zadanie “twoim drugim sposobem”, ale w C++. W pytonie są tylko 3 AC, ale to bez znaczenia?

Jest takie równanie:
Program = struktury danych + algorytm

Ale tak naprawdę moim zdaniem to:

Mikro Program AC na SPOJU = język programowania + algorytm dostosowany do języka + efektywność zakodowania algorytmu + casami chytre sztuczki programistyczne + struktury danych [czasami chytrze użyute] … itd

Twój pierwszy sposób jest nie tylko bardzo nieefektywnym algorytmem [sposobem] ale dodatkowo nieefektywnie zakodowanym. Jednak nawet różne drobne poprawki i sztuczki i tak dalej będą powodowały TLE. Na przykład do wyszukiwania trzeciego, brakującego punktu użycie liczenia i porównania wielkości pola na danych typu float zamiast int.

Jeżeli IleSposobów = algorytm * sposób zakodowania * struktury danych, to tych sposobów może być naprawdę sporo. Na przykład wyznaczanie otoczki wypukłej [trójkątnej] ale to sosób porównywalny czasowo do twojego pierwszego. Jak napisałem wyżej znam i użyłem sposobu nr 2.

Aby nabyć biegłości w posługiwaniu się narzędziami [język, struktury danych, debuger itd…] należy ćwiczyć, zaczynając od łatwych problemów i warto aby inna osobo sprawdzała twoje rozwiązania i nawzajem - programowanie 2 osobowe, ale nie wspólne rozwiązywanie jednego problemu. Z góry zaznaczam, że ja nie jestem fanem pythona

Dzięki za odpowiedź :slight_smile: Generalnie szukałem problemu w algorytmie, pierwszy rzeczywiście był marny. Drugi wydałał się ok, ale nie mieścił sie w czasie. Kilka dni próbowałem znaleźć coś mniej skomplikowanego niż 2, algorytmów convex hull nigdy nie stosowałem, ale też na nie trafiłem szukając rozwiązania z tym że odniosłem wrażenie że wymagałyby zbyt dużej ilości iteracji po punktach i sortowań. Teraz postaram się bardziej ucywilizować kod znaleźć lepszy sposób na strukturę danych. Cóź no komuś udało się to zrobić chyba w 1.6 s. w Py3. Dzięki za sugestie :slight_smile: