Problem C – Referat

Transkrypt

Problem C – Referat
XIII Dolnośląskie Zawody w Programowaniu Zespołowym,
Wrocław, 22-23. czerwca 2010
PROBLEM C: REFERAT
Problem
Uczeń ma przygotować referat. Do przygotowania referatu potrzebnych jest n różnych książek, które
dostępne są w bibliotece. Uczeń może jednocześnie korzystać z co najwyżej k książek. Jednorazowo
może wypożyczyć tylko jedną książkę. Podczas pisania referatu uczeń korzysta z wypożyczonych
książek. Jeśli potrzebuje książki, której nie ma wśród wypożyczonych to musi iść do biblioteki i ją
wypożyczyć. Uczeń idąc do biblioteki może oddać jedną książkę (tak, aby nie przekroczyć limitu
wypożyczonych książek). Dysponując tą wiedzą uczeń chce zminimalizować liczbę przypadków, gdy
musi iść do biblioteki. W tym celu musi bardzo rozważnie oddawać książki do biblioteki.
Napisz program, który:
•
wczyta ze standardowego wejścia ciąg kolejnych książek, z których będzie chciał skorzystać
uczeń,
•
obliczy minimalną liczbę przypadków wypożyczania książki z biblioteki,
•
wypisze wynik na standardowe wyjście.
Wejście
W pierwszym wierszu standardowego wejścia znajdują się trzy liczby całkowite: n, k, p (1 <= k <= n
<= 100.000, 1 <= p <= 500.000), pooddzielane pojedynczymi odstępami. Są to kolejno: łączna liczba
książek, liczba książek, jaką uczeń może wypożyczyć z biblioteki oraz długość ciągu książek, z których
będzie korzystał uczeń. W kolejnych p wierszach znajduje się po jednej liczbie całkowitej. Są to
numery kolejnych książek, z których będzie chciał skorzystać uczeń (książki są ponumerowane od 1 do
n).
Wyjście
W pierwszym i jedynym wierszu standardowego wyjścia należy zapisać jedną liczbę całkowitą minimalną liczbę przypadków, kiedy uczeń musi iść do biblioteki wypożyczyć książkę.
Przykład
Plik z danymi
327
1
2
3
1
3
1
2
Plik z wynikami
4
XIII Dolnośląskie Zawody w Programowaniu Zespołowym,
Wrocław, 22-23. czerwca 2010
Plik z danymi
Plik z wynikami
538
1
5
3
5
3
2
4
2
5