14 / 29
Aug 2018

mam wrażenie, że twój program rozwiązuje inny problem, niż podano w zadaniu - i daje poprawne wyniki tylko dla pewnych trójkątów

sprawdź dla takich danych testowych:

2
13 20 7 4
20 13 4 7

Dzięki za test. Przyczyną błędu były niedokładne rysunki (nie mając nawet linijki za bardzo skupiłem się na algebrze, a za mało na rysunkach trójkątów i wciąż miałem w wyobraźni coś plus minus równobocznego). Obserwacje są prawdziwe jedynie dla części trójkątów, ale nie dla wszystkich.

8 months later

Niech mi ktoś powie jakim cudem w algorytmie który polega na wczytaniu, prostym przeliczeniu i wyświetleniu wyniku mam czas 1.19s a rekordzista ma 0.2s? Jakim cudem mój kod jest sześć razy wolniejszy skoro używamy tego samego języka a kod jest maksymalnie uproszczony?

Jeżeli ja mam dla bardzo prostego kodu (obliczenia w 3 liniach) 4.50 s to wniosek jest jasny:

optymalizacja mojego kodu < optymalizacja Twojego kodu < optymalizacja kodu rekordzisty :slight_smile:

Szybkie IO ? Czesto sama zamiana cin/cout na scanf/printf dużo daje. A może i jeszcze jakaś optymalizacja

Oczywiście użyłem scanf i printf, inaczej bym nie zawracał gitary. a cały kod wygląda mniej więcej tak:

scanf (abcd);
prinf (coś tam pomnóż coś tam podziel ewentualnie spierwiastkuj) ;

Więc nie wiem co tu można bardziej zoptymalizować… Dodam że skrócić w żaden sposób obliczeń się nie da.

@manjaro
scanf i printf to nie jest jeszcze (bardzo) szybki I/O, a jeżeli testów jest w przybliżeniu tak gdzieś “w ciul” (5*10^5) to może to mieć znaczenie.

3 years later

Witam, jest w stanie ktoś wskazać błąd, wszystkie testy przechodzą podane w tym temacie, nie wiem gdzie jest błąd a sędzia odrzuca, używam twierdzenia stewarta,

Dlaczego amount jest typu long long?

Czy wiesz jakie/ile będzie miał x oraz y:

double x = 11 / 2

int b = 10000, d = 100;
double y = d * b * b
kodu
Jeżeli nie jesteś pewny, to napisz odpowwiedni programik

PS
Po uwzględnieniu powyższego i poprawieniu twojego kodu, uzyskałem TLE. Po przyśpieszeniu, a o tym jak, pisałem Ci w poprzednim wątku, pojawiło się zielone AC

PS 2

To było pytanie retoryczne. Użyty tu typ nie ma żadnego znaczenia do zaliczenia lub nie, zadania. Pytanie było retoryczne, bo znam odpowiedź. Nie ogarniasz typów zmiennych i to pytanie miało tylko zwrócić twoją uwagę na konieczność odrobienia tej zalegości lub jak tego nie odrobisz/nadrobisz będziesz ciągle miał z tym problemy.

Kluczem tutaj jest znajomość niejawnej konwersji typów [pytanie o x i y] w C++ oraz potem przyśpieszenie kodu.

Racja z tymi zmiennymi, biorę to pod uwagę, przerobiłem trochę kod i tez jest TLE, ale jak to zooptymalizowac to nie mam pojęcia

I tu na forum, i w necie jest pełno informacji na temat szybszego wczytywania, chociażby np: https://www.geeksforgeeks.org/fast-io-for-competitive-programming/7

Twoje przeróbki kodu bardzo spowalniają jego działanie. Dlaczego sądzisz, że pow (a, 2) jest szybsze od a * a? Nie, nie jest. Takie użycie typów, jak to zrobiłeś w swoim kodzie, chociaż da Ci koniec końców AC, ale jest dalekie od optymalnego.

3 months later

algorytm dobry, w c++ zmienne źle dobrane do operacji przeprowadzanych. W Pytonie nie znam sie, ale tam nie ma pętli która ogranicza wczytywanie danych i możliwe że łapie śmieci i sie wywala

Ciekawe…
Może nie sprawdza tego przypadku.
Chyba dla własnej ciekawości muszę sprawdzić, który wynik jest poprawny :slight_smile:

Dla przykładu
1
9999 9999 9997 9997
poprawny wynik to 199.98
Sprawdziłem to Mathematicą
Dla przykładu
1
13 20 7 4
20 13 4 7
Mój kod CPP daje 15.00
Zresztą poprawny wynik to dokładne 15

Dziękuję wasze rady korkiw, yula były bardzo pomocne. Mam AC, :fu:

w pytonie też ? Jak tak to daj kod z ciekawości :slight_smile: