Mathematical and Physical Journal
for High Schools
Issued by the MATFUND Foundation
 Already signed up? New to KöMaL?

# Problem I. 301. (October 2012)

I. 301. Many websites offer a solution for exchanging books. For a Hungarian example, see www.rukkola.hu, but to make such a site successful, a sufficient number of users is necessary. Upon registration one can mark which books are offered and required, then the site helps distributing the books.

Each line of the file csere.txt (downloadable from our webpage) contains data for the offers and requests in a chronological order. Each piece of data within a line is separated by exactly one space: the first piece is the type of the operation (A'' for offers and I'' for requests), then the day of registration of this operation is stored (counted from the creation of the site and is at most 100), finally the identifiers of the book and the user follow (both numbers at most 200). The book identifier does not denote a particular copy, rather the content. The csere.txt file contains at most 2000 lines.

The first few lines of csere.txt are shown in the example.

A 1 83 1
A 1 63 3
I 1 61 11
I 2 63 8
...

Your program (i301.pas, i301.cpp, ...) should be able to solve the following tasks. First the task number should be displayed (e.g. Task #4''), and a message should appear before each input describing the purpose of that input (e.g. Please enter a book identifier:''). Hungarian diacritical marks can be omitted.

[1.] Read and store data from the file csere.txt in an appropriate format.

[2.] Display the number of requests and offers contained in the file.

[3.] Prompt the user to enter a book identifier. Then display who and when requested it first. If still nobody, then print the message No requests for this book yet''.

[4.] Display the identifier of the most popular book (i.e., the book requested by the largest number of people). If there is a draw, every such item should be displayed, separated by a space, further, the book identifier should be followed by the number of requests in parenthesis, for example 18 (21) 3 (21).

[5.] Sometimes it is said in connection with such websites that everybody requests for more books than they offer. Can we justify this statement? Based on the available data display those user identifiers (in one line and separated by a space) who request for at least as many books as they offer.

[6.] The website makes pairs between requests and offers: the first requester will get the first offered copy of that book. Display the book identifier of the book that has been forwarded first, together with the number of days its requester had to wait for.

[7.] Track the route of the books. Each book route should be recorded into one line of the file mozgas.txt. The first item of the line should be the identifier of the day on which the corresponding offer for the request was found, that is, the day on which the given request-offer pair was formed. The second item should be the book identifier, finally the identifier of the offerer and requester are to be displayed. These items should be separated by a tabulator within the line. The lines within the file can be put in any order.

The source code of your program (i301.pas, i301.cpp, ...) should be submitted together with a short documentation (i301.txt, i301.pdf, ...) also describing which developer environment to use for compiling.

(10 pont)

Deadline expired on November 12, 2012.

Sorry, the solution is available only in Hungarian. Google translation

Az érettségi feladat megoldása során a beküldők fele nyújtott legalább 90 százalékos teljesítményt.