CCC '26 S4 - Minecarts
View as PDFCanadian Computing Competition: 2026 Stage 1, Senior #4
Steve has minecarts labelled from
to
lined up on a track in
a row from left to right. Initially, there are
gems in the
-th
minecart.
Steve wants the minecarts to be arranged in a row such that the number
of gems in each minecart is non-decreasing from left to right. To do
this, he plans to build a side track to the right of all of the
minecarts that splits off from the main track. Steve can move minecarts
that are on the left of the side track into the side track, allowing
other minecarts on its left to move past it on the main track. Minecarts
moved into the side track can be moved back into the main track one at a
time: a minecart on the side track will move back to the left of the
side track and to the right of all other minecarts which are on the left
of the side track. The last minecart moved into the side track must be
the first minecart to be moved back out: that is, the side track follows
a last-in, first-out method. The side track can be used any number of
times. Finally, once a minecart is moved to the right of the side track,
it can no longer be moved to the left. Below is an example sequence of
moves that can be made with minecarts beginning from the initial
position:
Steve has spare gems, and he can distribute any number of them into
the minecarts that are empty. Steve has yet to build the side track,
and he wants to limit the side track capacity to save work. A side track
with a specific capacity can only store up to that many minecarts. For
example, if the side track had a capacity of
, we would not be able
to make the moves in the diagrams above, which would require a capacity
of at least
. Given that Steve places his spare gems into the
minecarts optimally, what is the minimum capacity of the side track that
needs to be built?
Input Specification
The first line of input will consist of two space-separated integers
and
(
,
).
The next line contains integers
(
), where the
-th integer indicates the number of
gems in the
-th minecart.
The following table shows how the available 15 marks are distributed:
| Marks Awarded | Bounds on |
Bounds on |
|---|---|---|
| 2 marks | ||
| 2 marks | ||
| 2 marks | ||
| 3 marks | ||
| 3 marks | ||
| 3 marks |
Output Specification
Output a single integer, the minimum capacity of the side track that
needs to be built given that Steve distributes up to gems among the
empty minecarts optimally.
Sample Input 1
4 14
5 0 4 0
Sample Output 1
1
Explanation for Sample Output 1
One optimal distribution is to put of the spare gems into minecart
and
of the spare gems into minecart
. Note that this
distribution does not use all of the spare gems.
We can then build a side track of capacity . We can then arrange the
minecarts in non-decreasing order as follows:
Move minecart
past the side track
Move minecart
into the side track
Move minecart
past the side track
Move minecart
past the side track
Move minecart
out of the side track
Move minecart
past the side track
Sample Input 2
4 8
5 0 4 0
Sample Output 2
2
Explanation for Sample Output 2
One optimal distribution is to put all spare gems into minecart
.
Then we can build a side track of capacity . We can then arrange the
minecarts in non-decreasing order as follows:
Move minecart
past the side track
Move minecart
into the side track
Move minecart
into the side track
Move minecart
past the side track
Move minecart
out of the side track
Move minecart
out of the side track
Move minecart
past the side track
Move minecart
past the side track
Sample Input 3
4 123456789
40 30 20 10
Sample Output 3
3
Explanation for Sample Output 3
Since there are no empty minecarts, there is only one possible distribution of spare gems: no spare gems are used at all.
Then we can build a side track of capacity . We can then arrange the
minecarts in non-decreasing order as follows:
Move minecart
into the side track
Move minecart
into the side track
Move minecart
into the side track
Move minecart
past the side track
Move minecart
out of the side track and then past the side track
Move minecart
out of the side track and then past the side track
Move minecart
out of the side track and then past the side track
Comments