Witam, męczę się już 2 dzień z zadaniem na spoju. Znalazłem stronę na której jest rozpisane rozwiązanie na które sam wpadłem wcześniej, które wg autora postu nie jest na tyle wydajne aby móc przejść przez spoja, podaje drugi sposób I o ile rozumiem, że zamiast tablicy wartości logicznych mam zrobić tablicę int, to druga część rozwiązania jest dla mnie kompletnie niezrozumiała i nie mam pojęcia jak to zaimplementować w programie: link
Przy zliczaniu, kiedy dojdziemy do jakiejś zajętej komórki, po prostu dodamy do wyniku 1 licząc jedynie szczyt piramidy, a następnie dodamy 2 piramidy, o 1 rozmiar mniejsze. Tak więc dla a2,1 wpiszemy w komórki a3,1 i a3,2 wartość 2-1=1, a w komórki a3,2 i a3,3 liczbę 3-1=2. Czyli dzielimy piramidę na: szczyt (złożony z 1 kwadratu), lewą podpiramidę o rozmiarze o 1 mniejszym i prawą podpiramidę o rozmiarze o 1 mniejszym. Jak widzimy, 2 razy zaktualizowaliśmy komórkę a3,2. Musimy pamiętać, że możemy aktualizować komórkę TYLKO na wartość większą. Dotyczy to również wczytywania. Czyli jeśli mamy w jakiejś komórce wartość 5, to możemy ją zmienić na 7, ale odwrotnie już nie (bo interesuje nas maksymalny obszar pokryty przez piramidy).
Czy ktoś byłby w stanie pomóc mi z tym właśnie zliczaniem? Bardzo dziękuję za pomoc.
LINK DO ZADANIA NA SPOJ
Mój kod z rozwiązaniem naiwnym: https://ideone.com/u3Gi1J
Kod z zapisywaniem rozmiarów: https://ideone.com/aIR0zL