{"id":"informatyka-2005-maj-matura-rozszerzona-2/zad/5","paper_id":"informatyka-2005-maj-matura-rozszerzona-2","number":"5","points":null,"ptype":"open","subject":"informatyka","category":"matura","year":2005,"month":"maj","level":"rozszerzona","text":"Zadanie 5. Najlepsze sumy, najpopularniejsze elementy. (20 pkt)\nNajlepszą sumą ciągu liczb a1, a2, , an nazywamy największą wartość wśród sum złożonych\nz sąsiednich elementów tego ciągu. Na przykład dla ciągu: 1, 2, -5, 7 mamy następujące\nsumy:\n1, 1+2 = 3, 1+2+(-5) = -2, 1+2+(-5)+7 = 5, 2, 2+(-5) = -3, 2+(-5)+7 = 4, -5, -5+7 = 2, 7.\nZatem najlepszą sumą jest 7 (zwróć uwagę, że jeden element też uznajemy za sumę).\nDo oceny oddajesz:\nNa nośniku WYNIKI dokument tekstowy Raport5 zawierający odpowiedzi do punktów a), b), c).\nWykonaj poniższe polecenia.\na) Dany jest następujący ciąg liczb całkowitych: 1, -2, 6, -5, 7, -3. Wyznacz najlepszą sumę\ndla tego ciągu i wpisz poniżej jej wartość:\nNajlepsza suma:\nCzy na podstawie uzyskanego wyniku można podać wartość najlepszej sumy dla ciągu:\n1, -2, 2, 2, 2, -5, 3, 3, 1, -3.\nDo oceny oddajesz w dokumencie Raport5 wartości najlepszej sumy dla ciągu oraz\nodpowiedź z uzasadnieniem na powyższe pytanie.\nb) Zaproponuj algorytm wyznaczania najlepszej sumy dla dowolnego ciągu liczb\ncałkowitych. Na jego podstawie napisz program do obliczenia najlepszych sum ciągów\nliczb podanych w plikach dane5-1.txt, dane5-2.txt, dane5-3.txt (znajdującym się na\nnośniku DANE). Wpisz poniżej najlepsze sumy dla poszczególnych ciągów:\nNajlepsza suma dla dane5-1.txt\nNajlepsza suma dla dane5-2.txt\nNajlepsza suma dla dane5-3.txt\nDo oceny oddajesz także w dokumencie Raport5:\n• opis algorytmu zawierającego odpowiednie fragmenty kodu Twojego programu,\n• wartości najlepszych sum dla poszczególnych plików, które wpisałeś do powyższej\ntabeli.\nc) Wyznacz „najpopularniejszy” element w ciągu, czyli element występujący największą\nliczbę razy. Zaprojektuj jak najszybszy algorytm wyznaczania najpopularniejszego\nelementu ciągu oraz oszacuj liczbę wykonywanych przez niego operacji (czas działania)\njako funkcję od liczby elementów w ciągu. Zaprogramuj swój algorytm i zastosuj go do\nciągów znajdujących się w plikach dane5-1.txt, dane5-2.txt, dane5-3.txt. W przypadku,\ngdy w ciągu jest więcej niż jeden najpopularniejszy element, jako wynik podajemy\ndowolny z nich. Na przykład dla ciągu 1, 3, 5, 1, 3 poprawną odpowiedzią jest zarówno\n1, jak i 3 (oba elementy występują dwa razy). Wpisz poniżej najpopularniejsze elementy\ndla poszczególnych ciągów:\n5\nArkusz II\nNajpopularniejszy element w dane5-1.txt\nNajpopularniejszy element w dane5-2.txt\nNajpopularniejszy element w dane5-3.txt\nDo oceny oddajesz w dokumencie Raport5:\n• najpopularniejsze elementy w plikach dane5-1.txt, dane5-2.txt, dane5-3.txt\numieszczone w tabeli czytelnie prezentującej te wyniki,\n• opis algorytmu zawierającego odpowiednie fragmenty kodu Twojego programu\noraz oszacowanie czasu jego działania.\nPunktacja:\nCzęść zadania\nMaks.\na)\n4\nb)\n8\nc)\n8\nRazem\n20\n6\nArkusz II","answer":"a) najlepsza suma = 8 dla obu podanych ciągów; b),c) algorytmy podane, ale wyniki dla dane5-*.txt nieznane (plik poza korpusem)","answer_text":null,"solution":"Brak oficjalnego klucza CKE dla Arkusza II w dostępnym korpusie (plik *-odpowiedzi\nzawiera model odpowiedzi tylko dla Arkusza I). Podpunkt a) jest samodzielny (podany wprost\nciąg liczb), więc policzyłem go; podpunkty b) i c) wymagają zawartości plików dane5-1.txt,\ndane5-2.txt, dane5-3.txt z nośnika DANE, których nie ma w tym korpusie — konkretnych\nwyników liczbowych dla tych plików nie da się więc podać.\n\na) (4 pkt) Dla ciągu 1, -2, 6, -5, 7, -3: najlepsza suma = 8 (podciąg 6, -5, 7: 6-5+7=8).\nDla ciągu 1, -2, 2, 2, 2, -5, 3, 3, 1, -3: najlepsza suma = 8 (podciąg 2,2,2,-5,3,3,1: 2+2+2-5+3+3+1=8).\nTak, na podstawie samego wyniku dla pierwszego ciągu NIE można wprost wywnioskować wartości\nnajlepszej sumy dla innego, niezwiązanego ciągu — każdy ciąg trzeba przeanalizować osobno\n(przypadkowa równość obu wyników w tym przykładzie to zbieg okoliczności, nie prawidłowość\nogólna).\n\nb) (8 pkt) Algorytm wyznaczania najlepszej sumy (algorytm Kadane'a, liniowy O(n)):\nbest ← a[1]; biezaca ← a[1]\ndla i od 2 do n wykonuj\nbiezaca ← max(a[i], biezaca + a[i])\nbest ← max(best, biezaca)\nwypisz best\nKonkretne wartości najlepszych sum dla dane5-1.txt, dane5-2.txt, dane5-3.txt są NIEZNANE —\npliki te nie znajdują się w korpusie źródłowym.\n\nc) (8 pkt) Algorytm wyznaczania najpopularniejszego elementu (elementu o największej liczbie\nwystąpień) w czasie O(n log n): posortuj ciąg, następnie jednym przebiegiem policz długości\nmaksymalnych bloków jednakowych elementów i zapamiętaj element o najdłuższym bloku\n(przy remisie zwróć dowolny z nich) — sortowanie O(n log n) dominuje, przejście liniowe O(n).\n(Alternatywnie: tablica haszująca licząca wystąpienia, oczekiwany czas O(n), kosztem pamięci\nO(n).) Konkretne najpopularniejsze elementy dla dane5-1.txt, dane5-2.txt, dane5-3.txt są\nNIEZNANE — pliki te nie znajdują się w korpusie źródłowym.","image":"img/informatyka-2005-maj-matura-rozszerzona-2/zad-5.webp","solution_image":null,"topics":null,"page_from":4,"source":"ai","answer_source":"ai","answer_text_source":null,"solution_source":"ai","text_source":"ocr","source_label":"Informatyka · Matura · maj 2005 (rozszerzona)","subject_label":"Informatyka","category_label":"Matura","text_html":"<p>Zadanie 5. Najlepsze sumy, najpopularniejsze elementy. (20 pkt)<br>Najlepszą sumą ciągu liczb a1, a2, , an nazywamy największą wartość wśród sum złożonych<br>z sąsiednich elementów tego ciągu. Na przykład dla ciągu: 1, 2, -5, 7 mamy następujące<br>sumy:<br>1, 1+2 = 3, 1+2+(-5) = -2, 1+2+(-5)+7 = 5, 2, 2+(-5) = -3, 2+(-5)+7 = 4, -5, -5+7 = 2, 7.<br>Zatem najlepszą sumą jest 7 (zwróć uwagę, że jeden element też uznajemy za sumę).<br>Do oceny oddajesz:<br>Na nośniku WYNIKI dokument tekstowy Raport5 zawierający odpowiedzi do punktów a), b), c).<br>Wykonaj poniższe polecenia.<br>a) Dany jest następujący ciąg liczb całkowitych: 1, -2, 6, -5, 7, -3. Wyznacz najlepszą sumę<br>dla tego ciągu i wpisz poniżej jej wartość:<br>Najlepsza suma:<br>Czy na podstawie uzyskanego wyniku można podać wartość najlepszej sumy dla ciągu:<br>1, -2, 2, 2, 2, -5, 3, 3, 1, -3.<br>Do oceny oddajesz w dokumencie Raport5 wartości najlepszej sumy dla ciągu oraz<br>odpowiedź z uzasadnieniem na powyższe pytanie.<br>b) Zaproponuj algorytm wyznaczania najlepszej sumy dla dowolnego ciągu liczb<br>całkowitych. Na jego podstawie napisz program do obliczenia najlepszych sum ciągów<br>liczb podanych w plikach dane5-1.txt, dane5-2.txt, dane5-3.txt (znajdującym się na<br>nośniku DANE). Wpisz poniżej najlepsze sumy dla poszczególnych ciągów:<br>Najlepsza suma dla dane5-1.txt<br>Najlepsza suma dla dane5-2.txt<br>Najlepsza suma dla dane5-3.txt<br>Do oceny oddajesz także w dokumencie Raport5:<br>• opis algorytmu zawierającego odpowiednie fragmenty kodu Twojego programu,<br>• wartości najlepszych sum dla poszczególnych plików, które wpisałeś do powyższej<br>tabeli.<br>c) Wyznacz „najpopularniejszy” element w ciągu, czyli element występujący największą<br>liczbę razy. Zaprojektuj jak najszybszy algorytm wyznaczania najpopularniejszego<br>elementu ciągu oraz oszacuj liczbę wykonywanych przez niego operacji (czas działania)<br>jako funkcję od liczby elementów w ciągu. Zaprogramuj swój algorytm i zastosuj go do<br>ciągów znajdujących się w plikach dane5-1.txt, dane5-2.txt, dane5-3.txt. W przypadku,<br>gdy w ciągu jest więcej niż jeden najpopularniejszy element, jako wynik podajemy<br>dowolny z nich. Na przykład dla ciągu 1, 3, 5, 1, 3 poprawną odpowiedzią jest zarówno<br>1, jak i 3 (oba elementy występują dwa razy). Wpisz poniżej najpopularniejsze elementy<br>dla poszczególnych ciągów:<br>5<br>Arkusz II<br>Najpopularniejszy element w dane5-1.txt<br>Najpopularniejszy element w dane5-2.txt<br>Najpopularniejszy element w dane5-3.txt<br>Do oceny oddajesz w dokumencie Raport5:<br>• najpopularniejsze elementy w plikach dane5-1.txt, dane5-2.txt, dane5-3.txt<br>umieszczone w tabeli czytelnie prezentującej te wyniki,<br>• opis algorytmu zawierającego odpowiednie fragmenty kodu Twojego programu<br>oraz oszacowanie czasu jego działania.<br>Punktacja:<br>Część zadania<br>Maks.<br>a)<br>4<br>b)<br>8<br>c)<br>8<br>Razem<br>20<br>6<br>Arkusz II</p>","solutions":[{"source":"ai","label":"AI","kind":"text","html":"<p>Brak oficjalnego klucza CKE dla Arkusza II w dostępnym korpusie (plik *-odpowiedzi<br>zawiera model odpowiedzi tylko dla Arkusza I). Podpunkt a) jest samodzielny (podany wprost<br>ciąg liczb), więc policzyłem go; podpunkty b) i c) wymagają zawartości plików dane5-1.txt,<br>dane5-2.txt, dane5-3.txt z nośnika DANE, których nie ma w tym korpusie — konkretnych<br>wyników liczbowych dla tych plików nie da się więc podać.</p>\n<p>a) (4 pkt) Dla ciągu 1, -2, 6, -5, 7, -3: najlepsza suma = 8 (podciąg 6, -5, 7: 6-5+7=8).<br>Dla ciągu 1, -2, 2, 2, 2, -5, 3, 3, 1, -3: najlepsza suma = 8 (podciąg 2,2,2,-5,3,3,1: 2+2+2-5+3+3+1=8).<br>Tak, na podstawie samego wyniku dla pierwszego ciągu NIE można wprost wywnioskować wartości<br>najlepszej sumy dla innego, niezwiązanego ciągu — każdy ciąg trzeba przeanalizować osobno<br>(przypadkowa równość obu wyników w tym przykładzie to zbieg okoliczności, nie prawidłowość<br>ogólna).</p>\n<p>b) (8 pkt) Algorytm wyznaczania najlepszej sumy (algorytm Kadane&#x27;a, liniowy O(n)):<br>best ← a[1]; biezaca ← a[1]<br>dla i od 2 do n wykonuj<br>biezaca ← max(a[i], biezaca + a[i])<br>best ← max(best, biezaca)<br>wypisz best<br>Konkretne wartości najlepszych sum dla dane5-1.txt, dane5-2.txt, dane5-3.txt są NIEZNANE —<br>pliki te nie znajdują się w korpusie źródłowym.</p>\n<p>c) (8 pkt) Algorytm wyznaczania najpopularniejszego elementu (elementu o największej liczbie<br>wystąpień) w czasie O(n log n): posortuj ciąg, następnie jednym przebiegiem policz długości<br>maksymalnych bloków jednakowych elementów i zapamiętaj element o najdłuższym bloku<br>(przy remisie zwróć dowolny z nich) — sortowanie O(n log n) dominuje, przejście liniowe O(n).<br>(Alternatywnie: tablica haszująca licząca wystąpienia, oczekiwany czas O(n), kosztem pamięci<br>O(n).) Konkretne najpopularniejsze elementy dla dane5-1.txt, dane5-2.txt, dane5-3.txt są<br>NIEZNANE — pliki te nie znajdują się w korpusie źródłowym.</p>"}]}