# Informatyka — zadanie 6.1

> Źródło: matura.lol — https://matura.lol/question/maturazai-informatyka-inf-2018-05/zad/6.1
> Wersja Markdown strony zadania (dla asystentów AI). Przy cytowaniu podaj matura.lol i link powyżej.

- arkusz: Informatyka · Matura · maj 2018 (rozszerzona)
- rok: 2018
- poziom: rozszerzona
- typ: open
- punkty: 2
- działy: Programowanie i algorytmika

## Treść

Zadanie 6. Centrum danych

Pewna firma utrzymuje centrum danych, w którym znajduje się kilkaset pracujących komputerów. Specjalny zespół pracowników odpowiada za wykrywanie i usuwanie awarii komputerów. Pliki komputery.txt, awarie.txt oraz naprawy.txt zawierają dane niezbędne do wykonania zadania.

**komputery.txt** - pola: Numer_komputera (unikatowa liczba całkowita), Sekcja (A, B, C, - wielkie litery), Pojemnosc_dysku (w GB).
Przykład:
Numer_komputera | Sekcja | Pojemnosc_dysku
1 | R | 700
2 | N | 130
3 | E | 300

**awarie.txt** - pola: Numer_zgloszenia (unikatowy), Numer_komputera, Czas_awarii (data + godz. + sek.), Priorytet (1-10, jak krytyczna).
Przykład:
Numer_zgloszenia | Numer_komputera | Czas_awarii | Priorytet
1 | 365 | 2015-01-01 04:40:55 | 8
2 | 249 | 2015-01-01 06:08:24 | 3
3 | 312 | 2015-01-01 06:33:43 | 4

**naprawy.txt** - pola: Numer_zgloszenia, Czas_naprawy, Rodzaj (restart/wymiana).
Przykład:
Numer_zgloszenia | Czas_naprawy | Rodzaj
2 | 2015-01-01 20:08:15 | restart
7 | 2015-01-02 16:30:15 | restart
4 | 2015-01-02 19:37:03 | wymiana

Dane w wierszach plików są oddzielone znakami tabulacji, pierwszy wiersz pliku jest wierszem nagłówkowym.

Znajdź 10 najczęstszych rodzajów dysków (czyli 10 najczęściej występujących pojemności) wśród komputerów w centrum. Dla każdej ze znalezionych pojemności podaj liczbę komputerów z takim dyskiem. Posortuj zestawienie nierosnąco względem liczby komputerów z dyskiem o danej pojemności.

## Rozwiązanie — maturazai.pl (AI)

## Poprawna odpowiedź

| Pojemność [GB] | Liczba komputerów |
| 300 | 173 |
| 200 | 31 |
| 500 | 31 |
| 800 | 29 |
| 700 | 28 |
| 600 | 26 |
| 400 | 20 |
| 290 | 11 |
| 220 | 10 |
| 160 | 10 |

## Sposób 1 - SQL

```sql
SELECT Pojemnosc_dysku, COUNT(*) AS liczba
FROM komputery
GROUP BY Pojemnosc_dysku
ORDER BY liczba DESC
LIMIT 10;

Klauzule:
- `GROUP BY Pojemnosc_dysku` - grupuje po pojemności.
- `COUNT(*)` - liczy ile komputerów w grupie.
- `ORDER BY liczba DESC` - sortuje malejąco (nierosnąco).
- `LIMIT 10` - pierwszych 10.

## Sposób 2 - Python

```python
from collections import Counter

licznik = Counter()
with open('komputery.txt', encoding='utf-8') as f:
next(f) # header
for linia in f:
cz = linia.strip().split('\t')
if len(cz) >= 3:
pojemnosc = int(cz[2])
licznik[pojemnosc] += 1

top10 = licznik.most_common(10)
for pojemnosc, liczba in top10:
print(f"{pojemnosc} GB: {liczba}")

**Wynik:**
300 GB: 173
200 GB: 31
500 GB: 31
800 GB: 29
700 GB: 28
600 GB: 26
400 GB: 20
290 GB: 11
220 GB: 10
160 GB: 10

## Sposób 3 - arkusz kalkulacyjny

1. Otwórz komputery.txt (TAB).
2. **Tabela przestawna**: wiersze = Pojemnosc_dysku, wartości = Licznik Numer_komputera.
3. Sortuj malejąco wg licznika.
4. Pierwsze 10 wierszy = wynik.

Lub bez tabeli przestawnej:
- D1: unikatowa lista pojemności (`=USUŃ.DUPLIKATY(C:C)`).
- E1: `=LICZ.JEŻELI(C:C; D1)`.
- Sortuj D:E malejąco wg E, weź pierwsze 10.

## Reference informatyczny - agregacja TOP-N

> Reference - TOP-N w SQL:
> - `ORDER BY x DESC LIMIT n` - standardowe (MySQL, PostgreSQL, SQLite).
> - `TOP n` w SQL Server: `SELECT TOP 10 `.
> - `FETCH FIRST n ROWS ONLY` w Oracle/standardzie SQL.
>
> Reference - Counter w Pythonie:
> - `collections.Counter` - specjalny słownik do zliczania.
> - `.most_common(n)` - zwraca n najczęstszych jako listę krotek.
> - **Złożoność**: O(N) build, O(k log k) most_common gdzie k = liczba unikalnych.
>
> Reference - Tabela przestawna (pivot):
> - Wiersze: pole grupujące.
> - Wartości: funkcja agregująca (suma, licznik, średnia).
> - Idealne do szybkich agregacji bez kodu SQL.

## Schemat oceniania CKE

> Klucz CKE (zadanie 6.1, max 2 pkt):
> - **1 pkt** za prawidłowe zestawienie 10 par (pojemność, liczba)
> - **1 pkt** za prawidłowe sortowanie nierosnące
> - **0 pkt** - błędne lub brak

## Typowe pułapki

- **"Nierosnąco" = malejąco lub równo** - DESC w SQL. Niektórzy uczniowie sortują rosnąco (ASC).
- **Pominięcie nagłówka** - `next(f)` w Pythonie lub `Readln(f, s)` w Pascal przed pętlą.
- **Tylko sumy bez nazw** - pytanie wymaga PARY (pojemność, liczba), nie tylko liczby.
- **Mniej niż 10 wierszy** - jeśli unikalnych pojemności < 10, wystarczy mniej, ale w tym zadaniu jest co najmniej 10.
- **Pomyłka z konwersją int** - pojemność jako string daje błędne sortowanie ("100" < "200" leksykograficznie OK, ale "30" > "200").

## Złożoność obliczeniowa

- Wczytanie ~500 komputerów: O(K).
- Agregacja: O(K).
- Sortowanie 10 najczęstszych: O(U log U) gdzie U = liczba unikalnych pojemności.
- **Łącznie: O(K) ≈ 500 operacji.**

## Linki

- [dane JSON](https://matura.lol/api/question/maturazai-informatyka-inf-2018-05/zad/6.1)
- [otwórz w wyszukiwarce](https://matura.lol/?problem=maturazai-informatyka-inf-2018-05%2Fzad%2F6.1)

## Podobne zadania

- [Zadanie 2](https://matura.lol/question/informatyka-2025-maj-matura-rozszerzona/zad/2) — Zadanie 2. Zapis symboliczny W pliku symbole.txt zapisano 2000 napisów. Każdy z nich jest zapisany w osobnym wierszu i składa się z dokładnie 12 znaków spośród:
- [Zadanie 7](https://matura.lol/question/informatyka-2025-maj-matura-rozszerzona/zad/7) — Zadanie 7. Poszukiwanie wody na Marsie W trzech plikach tekstowych o nazwach laziki.txt, obszary.txt, pomiary.txt zapisano informacje zawierające dane o poszuki
- [Zadanie 3](https://matura.lol/question/informatyka-2023-maj-matura-rozszerzona/zad/3) — Zadanie 3. Liczba Pi Pewien matematyk jest zafascynowany liczbą π ≈ 3,14159265 do tego stopnia, że zapisał jej rozwinięcie dziesiętne z dokładnością do 10 000 c
- [Zadanie 3](https://matura.lol/question/informatyka-2025-maj-matura-rozszerzona/zad/3) — Zadanie 3. Dron Tor lotu pewnego drona składa się z prostych odcinków. Lot rozpoczyna się w punkcie (0, 0), a kończy w punkcie (20000, 0). Dron poza startem i l

_Ostatnia aktualizacja danych: 2026-10-03_
