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