ryan goce

ryan goce

  • NA
  • 1
  • 0

test your logic skills!

Jun 29 2007 8:01 AM

Hi people,

I have here a sample exam I got from a friend.  This will test your logic skills.  I have tried to answer it and create my own program but my logic has many loopholes in it. :( You can help me and try to solve this by yourself as well.  Please post your code to this thread.  Thanks!

 

Problem 1: CD Dubbing Optimization

A feature now becoming available on some compact disc players allows the
user to optimize the copying of a compact disc to cassette.  The user
specifies the size of the cassette; the player selects the tracks that will
best fill the first side of the cassette and plays them, then plays the
remaining tracks to be copied on the second side.  You have been hired by a
CD player manufacturer to implement this feature for their model line.

The number of tracks and time of each track is supplied on every CD.
Your program will be given this information, and is to determine which
tracks will best fill the first side of a cassette, given the size of the
cassette in minutes.  Cassettes come in sizes of 45, 60, and 90 minutes; the
size represents the total usable playing time of the cassette on both sides.

The tracks which best fill the first side of the cassette are the ones
with a total playing time closest to but not greater than half the cassette
size (Take note - It is best fit NOT first fit).

Input to your program will be the side of the cassette in minutes and the
number of tracks on the CD to be played (up to 17), followed by the time of
each track on the CD in order, starting with track 1.  The size and number
of tracks will appear on one line, separated from each other by spaces.  The
track times will appear in order, one per line starting in the first column,
with the minutes and seconds separated from each other by a colon. This
information will be repeated for each cassette/CD combination, and will be
terminated by end-of-file.

The output for each combination should consist of five lines. The first
line is to contain the total number of tracks and the size of the cassette,
appropriately labeled.  The second line is to contain the label "Side 1: "
followed by the numbers of the tracks to be placed on the first side of the
cassette, in ascending order separated from each other by single spaces.
The third line is to contain the total time for the side (labeled, in mm:ss
format, with a leading zero if needed for the seconds field).  The fourth
and fifth lines are to contain the same information for side 2.  One blank
line should appear between the output for each combination.

You may assume that the cassette will be large enough to hold all the
tracks on the compact disc.  If there is more than one set of tracks that
will yield the best possible result, any such set will be acceptable.

<Sample Input>

45 6
7:45
11:30
0:59
3:45
9:25
2:10
60 4
15:00
15:00
15:00
15:00


<Sample Output>

6 tracks on a C-45 cassette
Side 1:  1 2 3 6
Side 1 Elapsed Time 22:24
Side 2:  4 5
Side 2 Elapsed Time 13:10

4 tracks on a C-60 cassette
Side 1:  1 3
Side 1 Elapsed Time 30:00
Side 2:  2 4
Side 2 Elapsed time 30:00