Wpis z mikrobloga

#programowanie #cpp
Halp mirki. Problem raczej matematyczny, ale program jest istotny. #matura here, takie zadanko:

Niech n będzie dodatnią liczbą całkowitą i niech a 1 , a 2 , ..., a n będzie ciągiem nieujemnych
liczb całkowitych. Dla pary liczb i, j takich, że 1 ≤ ≤ ≤ , blokiem b(i,j) nazywamy
podciąg kolejnych elementów ciągu a z pozycji od i do j, czyli a i , a i+1 , ..., a j . Długością
bloku nazywamy liczbę jego elementów. O bloku, którego suma elementów jest podzielna
przez 3 mówimy, że jest blokiem trójkowym.
Przykład:
W ciągu 0,0,2,3,2,1,2 najdłuższym blokiem trójkowym jest b(4,6) = 3,2,1.
W plikach tekstowych bloki1.txt, bloki2.txt i bloki3.txt zapisano ciągi
odpowiednio 1000, 30000 i 1000000 nieujemnych liczb całkowitych mniejszych od 10 000.
W każdym pliku liczby zapisano w kolejnych wierszach, po jednej liczbie w każdym wierszu.
Dla każdego pliku z danymi wyznacz długość najdłuższego bloku trójkowego w ciągu
zapisanym w tym pliku.

bla bla. Napisałem taki program:
https://gist.github.com/ebc3784070df275fb772
Program przelicza to prawidłowo, z ładną złożonością n. Myli się jedynie o tę jednynkę w 29 linii (mam odpowiedzi, raczej prawidłowe). I teraz pytanie

dlaczego ta jedynka jest zła?

  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Fitoplankton: odpowiedź trochę nie na temat, ale:
- plik.close(); jest zbędne - pliki zamykają się same kiedy kończy się życie zmiennej; nie mam pojęcia skąd się ten idiotyzm bierze w dużej liczbie kursów cpp
- na maturze nie trzeba w ogóle obsługiwać plików - można tylko przekierować sobie strumienie
- indeksowanie od 1 jest dziwne i na dłuższą metę na pewno przysporzy sporo problemów, szczególnie kiedy mieszamy je ze standardowym numerowaniem od 0
-
  • Odpowiedz