**I. 352.** The *figure* (```Példa a lakótelepre`'') shows a rectangular area consisting of \(\displaystyle N\times M\) (\(\displaystyle 2\le N, M\le 50\)) tower blocks viewed from above.

The horizontal cross sections of the towers are identical squares. The number of levels of a tower block can vary between 1 and 9. On each level of each tower block there is exactly one flat. Create your program `i352` to answer the following questions by using data from the file `telep.txt`. Before writing any result to the screen, the number of the actual task (for example, `Task #3:`) should be displayed. If the user is prompted to enter any data, then the type of this requested input should also be shown. Diacritical marks in the output may be omitted. The first line of the file `telep.txt` contains the values of \(\displaystyle N\) and \(\displaystyle M\); the following \(\displaystyle N\) lines describe the number of levels of each tower block; and the last line of the file contains a one-letter abbreviation of the colors used to paint the tower blocks. The *example* ``Példa `telep.txt` fájl'' shows a sample `telep.txt` file: the string ```fszn`'' abbreviates the colors ``fehér'' (white), ``sárga'' (yellow), ``zöld'' (green) and ``narancs'' (orange).

1. Read the data from the file `telep.txt` and solve the following tasks.

2. Determine the percentage of the flats that are located in a tower having \(\displaystyle 1,2,\dots,9\) levels. You should use two decimal digits and the following format:

3. Give the number of flats with a 360-degree panorama. A flat has a 360-degree panorama, if the view is not blocked in any of the four directions (vertical or horizontal, if the tower blocks are viewed from above). Flats on the same or higher levels of other towers block the view in a given direction.

During remodeling, vertical stripes are painted on the towers in a way that consecutive levels of a tower will have the colors specified by the last line of the input file. Colors should be used in the given order and cyclically: they begin painting the tower in the top-left corner of the map, from its bottom level to the top, then proceed with the other towers in the same row of the map from left to right, and do this for each row. The color of the first level of a new tower should be the next color in the list following the color of the topmost level of the previous tower just completed.

4. You should write the colors of the topmost level of each tower to the output file `felso.txt` as specified by the *example* ``Példa kimeneti `felso.txt` fájl''.

5. It is important in the design of the area not to have neighboring towers with too similar colors. Prompt the user to enter a pair of coordinates representing the row and column coordinates of a tower relative to the top-left corner of the map (``**Példa bemenet**'' in the *example*), then determine whether there is a neighboring tower whose coloring begins in the same way from its bottom level up (but ignoring the number of levels of the two towers): ```Van`'' in the output (= ``**Kimenet**'') means there is a neighboring tower with this property, and ```Nincs`'' means there is no such neighbor.

6. They place a roof advertisement as a new level on the top of the tower specified by the user input of the previous task. You should determine the number of flats from which this advertisement can be seen. Recall from Task 3 that flats on the same or higher levels of other towers block the view in a given direction (vertical or horizontal, if the map is viewed from above).

The source code (`i352.pas`, `i352.cpp`, ...) of your program and a brief documentation (`i352.txt`, `i352.pdf`, ...) of your solution should be submitted in a compressed file `i352.zip`, also specifying the name of the developer environment to use for compiling your source.

**I. 353.** The game ``Egyszámjáték'' (The Smallest Number Wins Game) was invented by the Hungarian mathematician and psychologist *László Mérő:* in this game each player submits a positive integer between 1 and 10000, and these numbers are collected. Numbers that have been submitted more than once are deleted. The smallest number among the remaining ones wins.

`Example. Players submit the following numbers: 9, 6, 3, 7, 4, 6, 1, 6, 8, 1, 6, 5, 7, 9, 4, 2. We then remove duplicated elements. The remaining numbers are: 3, 8, 5. The player who submitted the smallest such number (3) wins. `

Prepare a sheet to evaluate the game based on the numbers submitted by players in email, and to determine the winner. The file `tippek.txt` (UTF-8 encoded and downloadable from our web page) contains the data for players and the numbers they submitted. For each player we have the following data:

*Tipp* The integer submitted by the player, \(\displaystyle 1\le \mathsf{tipp}\le
10\;000\);

*Név* The player's name (there can be more players with the same name);

*E-mail* The email address of the player, this address is unique.

If there are multiple submissions from the same email address, then only the first submission is taken into account (``valid'') and the others are considered as invalid. You should use a spreadsheet application to solve the following tasks, but user-defined functions or macros cannot be used.

Open the tabulator-separated text file `tippek.txt` in the application according to the *example.* It is enough if your solution handles the data given in this file correctly. Your work should be saved as `i353` in the default application file format. You should format the sheet according to the *example,* and give your answers in the cells adjacent to the messages in columns `D:G` by using expressions. Auxiliary computations can be performed in cells to the right of column `H`.

1. The winning number (```Nyertes szám`'') should appear in cell `E2`.

2. The name and email address of the winner (```Nyertes neve`'') should appear in cells `E3` and `G3`, respectively.

In the following tasks you should determine some other values and numbers.

3. In cell `E5` determine the number of *valid* submissions (```Tippek száma`'').

4. By using a function, determine in cell `E6` the number that has been validly submitted the most often (```Leggyakoribb tipp`''). If there are multiple such numbers, give only one instance.

5. By using a function, determine in cells `E7` and `E9` the smallest and the largest valid numbers submitted (```Legkisebb tipp`'' and ```Legnagyobb tipp'`').

6. In cells `E8` and `E10`, respectively, display the player names (```2. tippelője`'') who submitted the smallest and the largest valid numbers for the second time. If there is no second submitter, the message ```nincs`'' (= none) should appear.

7. You should format the sheet according to the *example. *

The spreadsheet (`i353.xls`, `i353.ods`, ...) together with a short documentation (`i353.txt`, `i353.pdf`, ...) describing the name and version number of the spreadsheet application should be submitted in a compressed file (`i353.zip`).

**S. 91.** Alice, Bob and Cecil are given \(\displaystyle N\) (\(\displaystyle 1\le N\le 60\)) boxes of presents. The value of each box is known: the \(\displaystyle i\)th box is worth \(\displaystyle a_i\) with \(\displaystyle 1\le a_i\le 100\). They would like to distribute these presents in a fair way. A particular distribution of the presents among the three people is said to be fair, if the person getting the set of presents with the highest total value gets a set of presents having the smallest possible total value. For example, if the presents have values 2, 4, 5, 8, 9, 14, 15 and 20, then a fair distribution could be the following: Alice gets the presents with values 2, 9 and 15 (the total sum is 26); Bob gets the presents 4, 8 and 14 (with total sum 26); and Cecil gets the presents 5 and 20 (with total sum 25). Given the list of presents, your task is to determine the maximal sum of presents a person can get during a fair distribution (in other words, that maximal sum is to be minimized). Your program should read \(\displaystyle N\) from the first line of the standard input, then the \(\displaystyle a_i\) *integers* (separated by a space) from the following \(\displaystyle N\) lines. The first and only line of the standard output should contain the minimal maximum value in a fair distribution. In the *example,* ``Példa bemenet'' is a sample input, while ``Példa kimenet'' is the corresponding output.

*Scoring and bounds.* You can obtain 1 point for a brief and proper documentation clearly describing your solution. Nine further points can be obtained provided that your program solves any arbitrary valid input within 1 second of running time. Partial points can be obtained if your program yields a solution

\(\displaystyle \bullet\) for \(\displaystyle a_i\le 40\), or

\(\displaystyle \bullet\) for \(\displaystyle N\le 10\).

The source code (`s91.pas`, `s91.cpp`, ...) without the `.exe` or any other auxiliary files generated by the compiler but with a short documentation (`s91.txt`, `s91.pdf`, ...), also describing which developer environment to use for compiling the source, should be submitted in a compressed file `s91.zip`.

(10 points)