Regional Finals - Rochester Institute of Technology

ACM ICPC: The Northeast North America Regional Final
Rochester Institute of Technology, November 15, 2014
Problem 1: Avoidland
Avoidland is a puzzle played on an n × n board with n pawns. The pawns are initially placed
on the squares of the board, at most one pawn per square. The goal is to move the pawns
so that they “avoid” each other – there cannot be a row or a column with more than one
pawn. In one move a pawn can move to a neighboring unoccupied square, that is, a square
that shares a side with the pawn’s current location and there is no pawn on it. Given the
initial locations of the pawns, what is the minimum number of moves needed to solve the
puzzle?
Input specification:
The first line contains k, the number of Avoidland puzzles. Each Avoidland puzzle is described on several lines. The first line contains n, then n lines follow. The i-th line contains
the initial row and column coordinates of the i-th pawn, separated by space. Each coordinate
is an integer between 1 and n. You may assume that n is at most 1,000,000.
Output specification:
The output contains one line for each Avoidland puzzle. The line contains the minimum
number of moves needed to solve the puzzle.
Sample input:
2
3
1 3
2 3
3 1
4
1
4
1
4
4
1
1
4
Sample output:
1
4
Explanation:
For sample input 1, we can move the second pawn to location (2,2). For sample input 2, we
can move the first pawn to location (1,3), then to location (2,3), and then move the second
pawn to location (3,1), then to location (3,2).
1
ACM ICPC: The Northeast North America Regional Final
Rochester Institute of Technology, November 15, 2014
Problem 2: Brick Wall
Pat and Mat are trying to build a brick wall. They have three types of bricks – all have
the same depth and height but they are of three different widths: 1, 2, and 3. As every
builder knows (and Pat and Mat learned after watching their walls fall down quite a few
times), a wall is built by layering rows of bricks, with the added requirement that for any
two neighboring bricks there has to be a brick above that covers the connection of the two
bricks (unless the bricks are in the top-most row). Pat and Mat somehow managed to build
quite a few rows and now they are about to do the last row. But they are having troubles
figuring out whether it is possible to build the last row so that all connections in the row
below are covered. Of course, all the rows have to be of the same length and aligned on the
sides. Help!
Input specification:
The first line contains k, the number of different walls that need to be finished. Then 2k
lines follow, where every wall is described on two lines. The first of these lines contains
four numbers N, c1 , c2 , c3 , separated by spaces, where N is the number of bricks in the
(currently) top-most row and ci describes the number of bricks of width i for i = 1, 2, 3 that
are available for the last row. The second line describes the currently top-most row – it
contains a sequence b1 , b2 , . . . , bN of brick lengths for the bricks that form the row, in the
order given by the sequence. You may assume that N is at most 100 and each of c1 , c2 , and
c3 is at most 300.
Output specification:
The output contains one line for each wall. The i-th line contains the string ”YES” if it is
possible to build the last row for the i-th brick wall, and ”NO” otherwise.
Sample input:
3
5
2
5
2
5
2
2
3
1
3
6
3
1
1
2
1
1
1
3
3 2
3
3 2
1
2 3
Explanation:
For the first sample input, a possible solution
is shown in the figure below, with one brick
of length 2 unused.
Sample output:
YES
NO
NO
1
ACM ICPC: The Northeast North America Regional Final
Rochester Institute of Technology, November 15, 2014
Problem 3: Cake
ˇ
Zofka
really likes cakes. Her most recent favorite is a rectangular-shaped cake with hard
chocolate glazing and white marzipan roses on top. The glazing has been pre-cut in a gridlike pattern at the bakery since this type of glazing is difficult to cut after it hardens. The
bakers pride themselves in creating various creations with the roses – they place every rose
in the middle of one of the grid squares (at most one rose per square) but the placement
ˇ
differs each time. Zofka
invited her friends to share the cake with her - together with her
there are as many people as there are roses on the cake as she and each of her friends like
ˇ
a piece with a rose. Zofka
can cut only rectangular pieces of the cake along the grid lines.
How should she cut the cake so that she and each of her friends gets a rectangular piece with
a rose and there is the smallest possible amount of leftover cake?
Input specification:
The first line contains k, the number of cakes. Each cake is described on several lines. The
first line contains p, q, and n, where p × q are the dimensions of the cake and n is the number
of roses. Then n lines follow, the i-th line contains the coordinates of the i-th rose, where
the first coordinate is between 1 and p and the second coordinate is between 1 and q. You
may assume that p and q are at most 10,000.
Output specification:
The output contains n + 1 lines for each cake. The first n lines contain four numbers each:
the j-th line contains aj , bj , cj , dj , where 1 ≤ aj ≤ cj ≤ p and 1 ≤ bj ≤ dj ≤ q and (aj , bj )
and (cj , dj ) correspond to the grid squares at the opposite corners of the rectangular piece for
the j-th person. The rectangular pieces have to be non-overlapping. The last line contains
a single number, the area of the leftovers. The area of the leftovers should be the smallest
possible.
Sample input:
Explanation:
1
4
2
3
1
4
A possible solution for the sample input is
shown in the figure below. The rectangular
pieces cover the cake entirely, so there are no
leftovers. This solution is described in the
sample output. Note that there are several
other correct outputs for the sample input.
5 4
2
4
4
5
Sample output:
1
3
3
1
0
1
1
5
4
2
4
4
2
3
4
5
5
1
ACM ICPC: The Northeast North America Regional Final
Rochester Institute of Technology, November 15, 2014
Problem 4: Cover up
Dezider is making a game board for the game of Convexity. He drilled a bunch of holes in
a piece of wood. As the name of the game suggests the holes were on the boundary of a
convex polygon. After turning over the piece of wood, Dezider froze—he had damaged the
famous Picasso lithograph—The Bull No. 8. Now the question is: how to fix the damage?
Drawing a bunch of straight lines to cover the holes seems like a good repair method but,
of course, Dezider would like to draw as few lines as possible. He needs your help. Write
a program that, given the positions of the holes, finds the smallest number of straight lines
that can cover the holes.
Input specification:
The first line contains k, the number of problems. Each of the next k lines contains a description of one problem. The line starts with n, the number of holes. Then 2n numbers, the
coordinates of the holes, follow. You can assume n ≤ 1,000 and the coordinates are integers
between -1,000,000 and 1,000,000. The holes lie on the boundary of a convex polygon.
Output specification:
The output contains one line for each problem. The line for the i-th problem contains the
smallest number ℓ, such that ℓ straight lines can cover the holes.
Sample input:
2
4 0 0 1 1 1 0 0 1
8 0 0 2 2 0 2 2 0 1 0 1 2 0 1 2 1
Sample output:
2
3
1
ACM ICPC: The Northeast North America Regional Final
Rochester Institute of Technology, November 15, 2014
Problem 5: Hopper
A hopper is a virtual creature that visits Java programs and explores their arrays. Scientists
observed a hopper and came to the following conclusions:
• a hopper only visits arrays with integer entries,
• a hopper always explores a sequence of array elements using the following rules:
– a hopper cannot jump too far, that is, the next element is always at most D
indices away (how far a hopper can jump depends on the length of its legs),
– a hopper doesn’t like big changes in values—the next element differs from the
current element by at most M , more precisely the absolute value of the difference
is at most M (how big a change in values a hopper can handle depends on the
length of its arms), and
– a hopper never visits the same element twice.
• a hopper will explore the array with the longest exploration sequence.
The scientists now need to prepare arrays for further study of hoppers and they need your
help. They want a program that given an array and values D and M computes the length
of the longest exploration sequence in the array.
Input specification:
The first line contains k, the number of problems. Then descriptions of the problems follow.
Each problem is described on two lines. The first line of a problem description contains three
numbers n, D, M , where n is the length of the array (as described above, D is the maximum
length of a jump the hopper can make, and M is the maximum difference in values a hopper
can handle). The next line contains n integers—the entries of the array. We have 1 ≤ D ≤ 7,
1 ≤ M ≤ 10, 000, 1 ≤ n ≤ 10, 000 and the integers in the array are between −1, 000, 000
and 1, 000, 000.
Output specification:
The output contains one line for each problem—the length of the longest exploration sequence. The hopper can start and end at any location and the length is computed as the
number of visited locations.
Sample input:
Sample output:
3
8
1
8
1
8
1
8
3
2
3
7
2
7
1
7
1
8 2 6 4 3 5
1
8 2 6 4 3 5
1
8 2 6 4 3 5
1
ACM ICPC: The Northeast North America Regional Final
Rochester Institute of Technology, November 15, 2014
Problem 6: Origami
Filip found a pile of square origami papers. In preparation for winter, and partly because he
did not really know what origami is, he decided to cut the papers into smaller pieces, place
the pieces on the blades of his ceiling fan, and turn the fan on. (He has a loft bed so he can
reach the ceiling fan easily.) As the pieces blew away, he watched it “snow”, over and over.
Now Filip is a little older, wiser, and he needs to clean his room. As he is picking up
the pieces of cut paper, he notices that there are nice patterns on them. He sorts them by
patterns and now he would like to tape them back together the way they used to be. Each
paper was a square, though the squares were of several different sizes. The trouble is, Filip
is not sure if he found all the pieces! Help him figure out whether he can form a square out
of the pieces he got.
Each piece is a polygon (Filip is very proud of his straight-line cutting abilities) and
each piece originally touched the boundary of the square. Filip remembers that he cut each
square into at most 5 pieces. To form a square, the pieces cannot overlap. The patterns on
the pieces allow us to orient them so that it is sufficient to consider only 90 degree rotations;
however, you may need to flip some pieces over.
Input specification:
The first line contains k, the number of different origami patterns. The pieces for each pattern
are described on several lines. The first line is empty, followed by a line that contains n,
the number of paper pieces of the current pattern. Then 2n lines follow. The (2i − 1)-st
line contains pi , the number of vertices of the i-th polygon piece. The (2i)-th line contains
coordinates x1 , y1 , x2 , y2 , . . . , xpi , ypi . The coordinates represent the polygon – traversing
through the points outlines the shape of the polygon (counterclockwise). You may assume
that such traversal will be non-self-crossing.
The number of pieces n is at most 5, every polygon has at most 30 vertices, and the
coordinates are integers between -10 and 10.
Output specification:
The output contains one line for each origami pattern. The line contains the word “YES” if
it is possible to fit the pieces together to form a square, and “NO” otherwise.
Sample input:
3
6
1 1 1 5 0 5 0 3 -1 3 -1 1
6
0 0 2 0 2 4 0 4 1 3 0 2
5
-1 -1 1 -1 1 0 0 1 -1 0
1
3
4
0 0 1 0 1 4 0 4
3
3 3 7 3 7 6
3
3 3 7 3 7 6
2
6
0 1 4 1 4 0 5 0 5 4 0 4
6
0 0 5 0 5 1 2 1 2 2 0 2
Sample output:
YES
YES
NO
Explanation:
Figures corresponding to the three sample inputs are below.
Sample input 1:
Sample input 2:
Sample input 3:
2
ACM ICPC: The Northeast North America Regional Final
Rochester Institute of Technology, November 15, 2014
Problem 7: Rebel Die
The rebel die needs to escape from the board prison. To accomplish the escape it needs
to blend in with the board on its way. Unfortunately, the guards colored the board using
various colors and figuring out the correct camouflage seems very difficult. The die is trying
to get from the top-left corner square to the bottom-right corner square. Fortunately, its
sides are of the same size as the squares of the grid and each grid square is colored by a
single color. The die wants to color its sides to blend in. The only moves it can do is to
flip (along an edge) onto one of the neighboring squares (for most squares there are four
neighboring squares). To go unnoticed the top color of the die must always match the color
of the square on which it is (in particular, in the starting position the top color of the die
must match the color of the top-left corner square and in the final position the top color of
the die must match the color of the bottom-right corner square). The die cannot do any
other moves (for example, it cannot rotate on a square). Please help the die to figure out if
a good camouflage exists.
Input specification:
The first line contains k, the number of boards. Each board is described on several lines.
The first line contains two integers m (the height of the board) and n (the width of the
board). Then m lines follow. Each of the m lines contains n integers. Each integer encodes
a color. Assume that 1 ≤ m, n ≤ 100 and the colors are integers from {0, 1, . . . , 29}.
Output specification:
The output contains one line for each board. The line for a board contains “YES” if there
exists a coloring of the die that allows the die to flip from the top-left corner square (the
square in first column of the first row) to the bottom-right corner square (the square in the
last column of the last row) on that board. If such a coloring does not exist then the line
contains “NO”.
Sample input:
2
4
0
0
2
5
4
0
1
2
3
4
1
4
4
6
4
1
2
3
4
2
0
1
7
3
0
4
8
2
3
4
5
3
4
5
6
1
Sample output:
YES
NO
Explanation:
For the first sample input, the coloring for the rebel die is shown below on a cube net. This
is the only camouflage that allows the die to get from the top-left corner to the bottom-right
corner and there is only one way how to do so.
0
0
2
5
4
1 0 2 8
3
2
1
4
4
6
2
0
1
7
3
0
4
8
ACM ICPC: The Northeast North America Regional Final
Rochester Institute of Technology, November 15, 2014
Problem 8: Sheep Pen
David and Martin retired from their jobs and became shepherds. After each winter they
need to rebuild the sheep pen. Each year they have a different collection of straight fence
segments of various lengths. Naturally, they want to build a sheep pen that covers the largest
area. They always spend a lot of time choosing, rearranging, and placing the segments but
they are never sure whether they got the optimal solution. Please help them.
Input specification:
The first line contains k, the number of years. Then k lines follow. Each line starts with n,
the number of fence segments and then contains a list of n integers, the lengths (in meters)
of the fence segments. The lengths are integers between 1 and 100. The number of fence
segments n is between 3 and 50.
Output specification:
The output contains one line for each year. The line for year i contains the maximum area
(in square meters) of a polygon whose sides have lengths given by the input for the i-th year.
Not all segment lengths listed need to be used. The answers should be output with precision
of two decimal places (rounded to the nearest number with two decimal digits). If no sheep
pen can be built, output 0.00.
Sample input:
3
4 1 1 1 1
3 1 1 1
5 1 1 2 2 7
Sample output:
1.00
0.43
2.00
1