Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
FR_03_06 - Stronicowanie |
Stronicowanie
Wyobraź sobie, że jesteś programistą w pewnej firmie i jest piątek popołudnie. Przed wyjściem robisz ostatnie porządki na biurku aż tu nagle ni stąd, ni zowąd pojawia się dyrektor. Z jakiegoś powodu nikt nie napisał programu, który miał być gotowy na wczoraj. Ponieważ nikogo oprócz Ciebie już nie ma, więc wiesz już co będziesz robił w piątek wieczorem. Twoje zadanie, to napisać skrypt, który będzie odpowiedzialny za stronicowanie rekordów i wyświetlanie ich na stronie w sposób zgodny ze specyfikacją podaną przez klienta. Skrypt powinien wyświetlać rekordy w odwrotnej kolejności ich zapisywania i grupować je pewnymi porcjami, a ponadto wyświetlać odnośniki do pierwszej i ostatniej strony oraz do trzech stron w przód i do trzech stron w tył, licząc od strony bieżącej, o ile takie istnieją. Na potrzeby testów musisz napisać program, który będzie pobierał rekordy i wyświetlał je odpowiednio na stronie w zależności od zapytania o numer strony.
Wejście
W pierwszym wierszu wejścia znajdują się dwie liczby całkowite r, w (0 < r < 100000, 0 < w < 100000) oznaczające odpowiednio liczbę rekordów w bazie danych oraz liczbę rekordów wyświetlanych na stronie. W kolejnych r wierszach podane są ciągi znaków złożone z małych i wielkich liter alfabetu łacińskiego, cyfr i znaku spacji, o maksymalnej długości 100. Każdy taki ciąg jest kolejnym rekordem zapisanym w bazie danych. Dalej znajduje się liczba całkowita q (0 < q < 1000) oznaczająca liczbę zapytań, po której znajduje się q liczb całkowitych k (0 < k < 100000), każda liczba w osobnym wierszu oznaczająca zapytanie o numer strony.
Wyjście
Dla każdego zapytania należy wypisać odpowiednią liczbę rekordów na stronie k-tej, każdy rekord w osobnym wierszu, oraz w nowym wierszu ciąg odnośników do kolejnych stron, według specyfikacji. Wszystkie numery reprezentujące odnośniki, poza bieżącą stroną, zapisywane są w kwadratowym nawiasie []. Jeśli liczba k (bieżąca strona) pomniejszona o 4 jest większa od 1 lub liczba k powiększona o 4 jest mniejsza od wartości ostatniej strony, należy odpowiednio po pierwszej stronie lub przed ostatnią stroną wstawić trzy kropki. Separatorem pomiędzy odnośnikami jest co najmniej jedna spacja. W przypadku zapytania wykraczającego poza zakres ostatniej strony należy wypisać: HTTP 404
Pomiędzy zapytaniami dozwolony jest dodatkowy znak końca linii.
Przykład
Wejście
37 3
rekord nr 1
rekord nr 2
rekord nr 3
rekord nr 4
rekord nr 5
rekord nr 6
rekord nr 7
rekord nr 8
rekord nr 9
rekord nr 10
rekord nr 11
rekord nr 12
rekord nr 13
rekord nr 14
rekord nr 15
rekord nr 16
rekord nr 17
rekord nr 18
rekord nr 19
rekord nr 20
rekord nr 21
rekord nr 22
rekord nr 23
rekord nr 24
rekord nr 25
rekord nr 26
rekord nr 27
rekord nr 28
rekord nr 29
rekord nr 30
rekord nr 31
rekord nr 32
rekord nr 33
rekord nr 34
rekord nr 35
rekord nr 36
rekord nr 37
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Wyjście
rekord nr 37
rekord nr 36
rekord nr 35
1 [2] [3] [4] ... [13]
rekord nr 34
rekord nr 33
rekord nr 32
[1] 2 [3] [4] [5] ... [13]
rekord nr 31
rekord nr 30
rekord nr 29
[1] [2] 3 [4] [5] [6] ... [13]
rekord nr 28
rekord nr 27
rekord nr 26
[1] [2] [3] 4 [5] [6] [7] ... [13]
rekord nr 25
rekord nr 24
rekord nr 23
[1] [2] [3] [4] 5 [6] [7] [8] ... [13]
rekord nr 22
rekord nr 21
rekord nr 20
[1] ... [3] [4] [5] 6 [7] [8] [9] ... [13]
rekord nr 19
rekord nr 18
rekord nr 17
[1] ... [4] [5] [6] 7 [8] [9] [10] ... [13]
rekord nr 16
rekord nr 15
rekord nr 14
[1] ... [5] [6] [7] 8 [9] [10] [11] ... [13]
rekord nr 13
rekord nr 12
rekord nr 11
[1] ... [6] [7] [8] 9 [10] [11] [12] [13]
rekord nr 10
rekord nr 9
rekord nr 8
[1] ... [7] [8] [9] 10 [11] [12] [13]
rekord nr 7
rekord nr 6
rekord nr 5
[1] ... [8] [9] [10] 11 [12] [13]
rekord nr 4
rekord nr 3
rekord nr 2
[1] ... [9] [10] [11] 12 [13]
rekord nr 1
[1] ... [10] [11] [12] 13
HTTP 404
Dodane przez: | Mariusz Śliwiński |
Data dodania: | 2015-03-08 |
Limit czasu wykonania programu: | 1s |
Limit długości kodu źródłowego | 50000B |
Limit pamięci: | 1536MB |
Cluster: | Cube (Intel G860) |
Języki programowania: | All except: ASM32-GCC ASM64 MAWK BC C-CLANG NCSHARP CPP14-CLANG COBOL COFFEE D-CLANG D-DMD ELIXIR FANTOM FORTH GOSU GRV JS-MONKEY JULIA KTLN NIM OBJC OBJC-CLANG OCT PICO PROLOG R RACKET RUST SCM qobi CHICKEN SQLITE SWIFT UNLAMBDA VB.NET |