Submit | All submissions | Best solutions | Back to list |
MPPZF - Skarbonka |
Jaś jest grzecznym chłopcem mieszkającym w Bajtocji. Jak każdy grzeczny chłopiec, Jaś dostaje od rodziców kieszonkowe. Rodzice co jakiś czas dają mu jakąś monetę, żeby mógł ją wrzucić do swojej skarbonki. System monetarny Bajtocji nie jest takim zwykłem systemem monetarnym. Posiadają oni nominały na wszystkie wartości swoich pieniędzy, które są liczbami naturalnymi niewiększymi niż 2000000000, przy czym nominały do 10000 włącznie są monetami, a nominały wyższe są banknotami. Oprócz tego pieniądze te mają bardzo ciekawą własność - otóż monety mają średnicę równą swojej wartości (np. moneta o nominale 3 ma średnicę równą 3, nominał 15 to średnica 15), a banknoty mają z kolei powierzchnię równą swojej wartości (np. banknot o nominale 10200 ma powierzchnię 10200, nominał 888888 to powierzchnia 888888). Każdą monetę, którą Jaś dostaje natychmiast wrzuca do skarbonki, przy okazji zapamiętując monety jakich nominałów ma obecnie w skarbonce. Robi to dlatego, że kiedy co jakiś czas rodzice dostają wypłatę (wypłata w Bajtocji polega na wydaniu rodzicom Jasia po jednej monecie i jednym banknocie z każdego nominału), Jasiu, jeśli tylko może, wykonuje pewną operację, dzięki której chce zwiększyć swoje nominały. Mianowicie robi w skarbonce dziurkę, w którą zmieszczą się tylko monety o minimalnym nominale. Następnie wytrząsa ze skarbonki wszystkie monety o tym nominale. Ponieważ Jaś akurat uczy się tabliczki mnożenia, więc nie wytrząsa ze swojej skarbonki żadnych innych monet, tylko zanosi, te które mu wyleciały i zanosi do mamy, żeby wymienić je na banknot lub monetę o większym nominale o tej samej wartości, co monety, które daje mamie. Wyjątkiem jest sytuacja, kiedy Jaś może wytrząsnąć tylko jedną monetę o najniższym nominale, bo więcej takich nie ma. Wtedy wyciąga ze skarbonki jeszcze jedną monetę o najniższym nominale i zanosi je wymienić do mamy, przypominając sobie wtedy tabliczkę dodawania, której już wcześniej się nauczył. Czasami Jaś dostaje od mamy monety o wyższym nominale, ale czasami dostaje także banknoty. Jaś jest wtedy bardzo dumny i za każdym razem, jak przychodzą do niego koledzy z klasy pokazuje im największy banknot, jaki ma. Niestety czasami nie ma żadnego banknotu i wtedy jest mu trochę wstyd.
Jaś ma pustą skarbonkę. Wiedząc kiedy dostaje jakie monety od mamy, kiedy mama ma wypłatę, oraz kiedy przychodzą do niego koledzy, ustal jakie banknoty, jeśli jakieś ma, będzie pokazywał swoim kolegom.
Input
W pierwszym wierszu wejścia znajduje się jedna liczba całkowita, oznaczająca liczbę zestawów danych, które za chwilę pojawią się na wejściu. Zestaw danych obejmuje ciąg znaków ze zbioru {1, 2, 3 ... 10000, w, k}, gdzie liczby od 1 do 10000 są nominałami monet, które Jaś dostaje od mamy, w oznacza, że mama dostaje wypłatę, a k znaczy, że Jasia odwiedzili koledzy. Zestaw kończy się zerem. Znaki te są zapisane w kolejności zachodzenia zdarzeń.
Output
Program powinien zwracać wartości banknotów, które Jaś pokazuje kolegom pooddzielane spacją. Jeśli Jaś nie ma żadnego banknotu podczas odwiedzin kolegów, program powinien w to miejsce wypisać słowo "bb" (brak banknotów).
Example
Input: 4 2000 2000 2000 w 2000 2000 2000 w w 6000 6000 w w k 0 k k k k 2 3 k 1 2 w 23 4 2 0 10000 k 1 w k 0 1 2 3 4 5 6 7 8 9 0 Output: 12000 bb bb bb bb bb bb 10001
Jaś is a good boy living in Byteotia. Like every good boy, Jaś gets pocket money from his parents. His parents give him a coin from time to time so he can put it into his piggy bank. The Byteotian monetary system is not an ordinary monetary system. They have denominations for all values of their money, which are natural numbers not greater than 2000000000, with denominations up to and including 10000 being coins, and higher denominations being banknotes. In addition, this money has a very interesting property - coins have a diameter equal to their value (e.g. a coin with a denomination of 10200 has a diameter of 10200, the denomination 888888 has a diameter of 888888). He immediately throws every coin that Jaś receives into the piggy bank, at the same time remembering what coin denominations he currently has in the piggy bank. He does this because when his parents receive a payment from time to time (the payment in Byteotia consists in giving Jaś's parents one coin and one banknote from each denomination), Jaś, if he can, performs a certain operation thanks to which he wants to increase his denominations. Namely, he makes a hole in the piggy bank to fit only coins of the minimum denomination. Then he shakes out all the coins of that denomination from the piggy bank. Since Jaś is currently learning the multiplication table, he doesn't shake out any other coins from his piggy bank, he just takes the ones that have fallen out to him and takes them to his mother to exchange them for a banknote or a coin of a larger denomination of the same value as the coins he gives mom. The exception is when Jaś can only shake out one coin of the lowest denomination, because there are no more of them. Then he takes out another coin of the next lowest denomination from the piggy bank and takes it to his mother to exchange it, remembering the addition table he had already learned. Sometimes Jaś gets coins with a higher denomination from his mother, but sometimes he also gets banknotes. Jaś is then very proud and every time his classmates come to him, he shows them the biggest banknote he has. Unfortunately, sometimes he doesn't have any banknote and then he feels a bit ashamed.
Jaś has an empty piggy bank. Knowing when he gets what coins from his mother, when his mother is paid, and when his friends come to see him, determine what banknotes, if he has any, he will show to his friends.
Input
The first line of the input contains one integer, indicating the number of data sets that will soon appear in the input. The data set includes a string of characters from the set {1, 2, 3 ... 10000, w, k}, where the numbers from 1 to 10000 are the denominations of coins that Jaś receives from his mother, w means that his mother receives a payment, and k it means that Jaś was visited by his friends. The set ends with zero. These characters are written in the order in which events occurred.
Output
The program should return the values of the banknotes that Jaś shows to his colleagues, separated by a space. If Jaś doesn't have any banknotes when his friends visit, the program should print the word "bb" (no banknotes) in its place.
Example
Input: 4 2000 2000 2000 w 2000 2000 2000 w w 6000 6000 w w k 0 k k k k 2 3 k 1 2 w 23 4 2 0 10000 k 1 w k 0 1 2 3 4 5 6 7 8 9 0 Output: 12000 bb bb bb bb bb bb 10001
Added by: | Rafał Witkowski |
Date: | 2022-05-26 |
Time limit: | 1s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | All |
Resource: | Mistrzostwa Poznania w Programowaniu Zespołowym 2003 - Rafał Witkowski |