All Just a Dream

Embed Size (px)

Citation preview

  • 7/28/2019 All Just a Dream

    1/15

    All Just A Dream

    Problem id: dreamTime limit: 3 seconds

    Memory limit: 2048 MB

    Picture in Public Domain via Wikimedia Commons

  • 7/28/2019 All Just a Dream

    2/15

    A common plot device in story-telling is the All Just A Dream trope. Typical

    symptoms of this trope being used are talking lions, main characters dying, yodeling

    aliens on monocycles, and a general plethora of weird events. Then, of course, someonewakes up and it is revealed that everything that happened during the entire season did in

    fact not happen at all. It was All Just A Dream (or some kind of hallucination), and the

    days of our lives spent watching all those episodes are lost forever. In order to causefurther confusion and uncertainty, this can also be done in layers, with characters having

    dreams within dreams within dreams, and so on.

    When the All Just A Dream trick is taken too far and gets used too often, it can get

    difficult to keep track of what has actually happened. This is where you enter the picture.You will be given a list of events, dreams, and scenarios. Each scenario specifies some

    events that have happened and some others that have not happened. Your job is to

    determine for each scenario whether that scenario is possible (possibly using the All JustA Dream trick).

    Input

    The first line of input consists of an integer0n50000, the number of events,dreams and scenarios. Then follow n lines, giving the events, dreams, and scenarios inchronological order. Each line is in one of the following forms:

    An event line is of the form E e, indicating that event e happens (see below forformat ofe).

    A dream line is of the form D r, indicating that the last revents that happenedwere All Just A Dream. Note that these events are now considered to not have

    happened, so they should not be counted when processing subsequent D lines.

    A scenario line is of the form S ke1 ek, where 1k30 is an integergiving the number of events and e1,,ek is the list of events of the scenario. In ascenario, each event may be prefixed with a !, indicating that the event did not

    happen in this scenario.

    Events are strings containing at most 20 characters and using only the characters a-z

    and underscores (_). For D lines, you can assume that ris an integer between 1 and R,where R is the total number of events that have happened so far (and that have not turnedout to be a dream). For E lines, you can assume that e is not an event that has already

    happened, except if the previous occurence of the event turned out to be a dream, inwhich case it can happen again.

    Warning

    This problem has somewhat large amounts of input and output. We recommend you tomake sure that your input and output are properly buffered in order to make the most of

    the few seconds of execution time that we give you.

  • 7/28/2019 All Just a Dream

    3/15

    Output

    For each scenario in the input, output a line as follows:

    Yes if the given scenario is consistent with what has happened so far.

    r Just A Dream if the given scenario would be consistent with what hashappened so far, provided a D r line had occurred just before the scenario. If

    there are many possible values ofr, choose the smallest value. Note that youshould not consider this hypothetical D r line to have occurred (as illustrated by

    sample input 2 below).

    Plot Error otherwise.

    Sample Input 1 Sample Output 110E business_as_usual

    E bobby_diesS 1 bobby_died

    E stuff_happensE jr_does_bad_things

    S 2 !bobby_dies business_as_usualE it_goes_on_and_on

    D 4S 1 !bobby_dies

    S 2 !bobby_dies it_goes_on_and_on

    Plot Error3 Just A Dream

    Yes

    Plot Error

    Sample Input 2 Sample Output 211

    S 1 !somethingE one

    E twoE three

    E fourE five

    S 3 three !four oneD 1

    S 3 three !four one

    D 1

    S 3 three !four one

    Yes

    2 Just A Dream1 Just A Dream

    Yes

  • 7/28/2019 All Just a Dream

    4/15

    Wheel Game

    Problem id: wheelgame

    Time limit: 1 secondsMemory limit: 2048 MB

    Its yet another rainy day in 1959, there are no video games, and you are stuck indoors

    playing a game with a friend. The game is played using an even number2n of sticks,laid out on a table to form a wheel with n spokes as shown in the figure below.

    You and your friend take turns removing sticks (you always start, since you are you). The

    rules are simple: each turn, the current player selects one of the remaining sticks. She

    then removes this stick and all sticks touching the selected stick. This goes on until there

    are no sticks left, and the player who removed the last stick is declared the winner.

    (a) A wheel with 5 spokes

  • 7/28/2019 All Just a Dream

    5/15

    (b) What remains after the grey stick is selected

    Figure 1: A possible initial move in the wheel game

    After a while, this gets boring, and you start fantasizing about what the world will be like

    in the 21st century: no doubt there will be robots to play stick games with instead of

    plain old friends. Oh what jolly fun it would be! But what if the robots are super smart?Then you would never be able to win. That wouldnt be very fun.

    Write a program which, given the value ofn, determines whether you would have anypossibility of winning when playing against a robot, or whether you would lose no matter

    what you do. Assume that the robot is clever enough to always play optimally, andunemotional enough that it would never intentionally lose just to make you feel better.

    Input

    The input consists of a single integern between 3 and 500000, inclusive. (You maycomplain that it is impossible to lay out that many sticks to form something resembling awheel, but recall that this took place in 1959 the times were different back then.)

    Output

    Output a single line, containing The robot is your friend if it is possible for you

    to win, or Destroy the robot before it is too late if the robot would win no

    matter how you play.

    Sample Input 1 Sample Output 15 Destroy the robot before it is too late

    Sample Input 2 Sample Output 2

  • 7/28/2019 All Just a Dream

    6/15

    6 The robot is your friend

    PlaylistProblem id: playlist

    Time limit: 22 seconds

    Memory limit: 2048 MB

    Photo by Anonymous Account on flickrYou have been invited to host a famous radio show to tell your fascinating life story and

    play some of your favorite songs. However, choosing which songs to play is turning out

    to be very tricky; there are just way too many good songs and you only have enough timeto play a measly nine songs!

  • 7/28/2019 All Just a Dream

    7/15

    In order to give the show a sense of continuity, you have decided that consecutive songs

    you play should have some detail in common. For instance, if you start by playing

    Bjrks song Pagan Poetry, you could continue with next playing matmos trackEnigma Machine for Alan Turing since matmos contributed to Bjrks Vespertine

    album (on which Pagan Poetry appears). Continuing, you might play a part of

    Prokofievs , as it was written in 1936, the same year as Alan Turingsseminal paper on undecidability of the Halting Problem, and so on. The ordering of the

    songs is important, so just because you could play song X after song Y it will not

    necessarily be the case that you can play song Y after song X. At the same time asachieving this sense of continuity, you also want the playlist to have a bit of variation, so

    all nine songs must be by different artists.

    You have narrowed things down to a bunch of your favorite songs, but finding a list of

    nine songs with a common thread seems tricky. Maybe you could use your programmingskills to find a good playlist?

    Input

    The first line of input consists of an integern (9n100), the number of songs. Thenfollow n lines. Each line describes a song, starting with the name of the artist (as a stringof a-z of at most 15 characters), followed by an integert(1t40), the number ofsongs that can be played directly after this song. Then follows (on the same line) tdistinct integers s1,,st, each between 1 and n, giving the numbers of the songs thatcan be played after the current song. The songs are numbered from 1 to n, with songnumber1 being described on the first line, and so on.

    OutputIf there is a playlist of nine songs satisfying the requirements, output a list of nineintegers giving the numbers of the songs (according to the same numbering as in the

    input), in the order they should be played. Otherwise, output a single line containing the

    word fail. If there is more than one valid playlist, any one of them will be accepted.

    Sample Input 1 Sample Output 110

    a 2 10 3

    b 1 6

    c 2 1 5d 1 9

    e 1 4f 1 2

    g 2 6 8

    h 0

    i 1 3j 1 7

    5 4 9 3 1 10 7 6 2

    Sample Input 2 Sample Output 210 fail

  • 7/28/2019 All Just a Dream

    8/15

    a 2 10 3

    a 1 6

    c 2 1 5

    d 1 9e 1 4

    f 1 2g 2 6 8

    h 0

    i 1 3

    j 1 7

    Sample Input 3 Sample Output 310

    a 2 10 3b 1 6

    c 2 1 5d 1 9

    e 1 9

    f 1 2

    g 2 6 8h 0

    i 1 3j 1 7

    fail

    Square Pie

    Problem id: squarepie

    Time limit: 11 secondsMemory limit: 2048 MB

    You are working on an OCR (Optical Character Recognition) application to convert

    scanned images into text format. In addition to just being able to parse text, you plan to

    have your software recognize graphs and transcribe them in a meaningful way. Havingalready handled histograms, bar graphs, scatter plots and regular pie charts, you have now

    worked your way tosquare pie charts.

    A square pie chart consists of a rectangle subdivided into regions by horizontal or vertical

    lines. Just like a regular pie chart, the different regions represents how large fractions ofsomething (e.g., baked desserts) are taken up by various subcategories (e.g., pies,

    cookies, etc). See the figure below for an example.

  • 7/28/2019 All Just a Dream

    9/15

    Figure 1: A square pie chart. This is a drawing of the second example case.

    The module you are working on will be given a set of horizontal and vertical linesegments forming a square pie chart, and should compute the sizes of the different

    regions of the chart.

    The set of line segments is guaranteed to have been constructed as described above. In

    other words, four of them form a rectangle constituting the boundary of the square piechart, and then each remaining line segment divides one rectangle into two smaller ones.

    Note that this means that the line segments do not intersect, except that the endpoints of

    each line segment touches some other line segment. However, the order of the linesegments in the input is completely arbitrary and you can not assume that they are given

    in the order they were drawn.

    Input

    The first line of input consists of a single integern (4n100000), the number oflines of the pie chart. Each of the following n lines consists of four integers x1,y1,x2,y2, indicating a line segment from (x1,y1) to (x2,y2). The line segment is eitherhorizontal (i.e.,x1x2 andy1=y2) or vertical (i.e.,x1=x2 andy1y2). Each

    coordinate is at most 109 in absolute value.

    Warning

    This problem has somewhat large amounts of input and output. We recommend you tomake sure that your input and output are properly buffered in order to make the most of

    the few seconds of execution time that we give you.

  • 7/28/2019 All Just a Dream

    10/15

    Output

    If there are m regions in the pie chart, the output should consist ofm lines, giving thesizes of the different regions (as fractions of the entire chart), in non-increasing order.

    You do not need to worry about the precise formatting of the sizes (e.g., number of

    decimals), but the absolute error of each size must be smaller than 109.

    Sample Input 1 Sample Output 14

    2 2 6 26 2 6 6

    6 6 2 6

    2 6 2 2

    1

    Sample Input 2 Sample Output 28

    6 2 0 2

    0 0 6 0

    0 2 0 02 2 2 13 1 3 0

    0 1 6 16 0 6 2

    2 1 2 0

    0.333333333333

    0.25000.16666666670.16666666667

    0.0833333333

    Peer Streaming

    Problem id: streamingTime limit: 12 seconds

    Memory limit: 2048 MB

  • 7/28/2019 All Just a Dream

    11/15

    Photo by Tanbir Ahmed via Wikimedia Commons

    You are developing software to stream music to users over the Interwebs. In order toreduce network traffic for your servers, you plan to do this in a peer-to-peer way: a user

    who has listened to a given song for a while longer than some other user will have parts

    of the song that the second user needs and can send them to her directly.

    It is now time to develop the logic to decide which users should send which data to whichother users. At a high level, the logic works as follows. Each second, the data available at

    the different users listening to a song is examined. Based on this, the system decides what

    data users should transmit, and to whom.

    To be specific, suppose there are n users currently listening to the song. The ith users

    playback is currently at thepith byte of the song, and has already received the firstbipi bytes of the song, and no other parts of the song. Furthermore, each user has abandwidth ui bounding how many bytes she can upload in total to other users during theone second interval. After one second, each users playback will be C bytes further, i.e.,the ith user will be at byte pi+C. Each user now has the first bi bytes of the song,where bi depends exactly on what data was received from other users during the second.Thus, after the one second interval, the buffer that the ith user has is bi(pi+C) bytes.During the one second interval, a user can only upload data that she had before the

  • 7/28/2019 All Just a Dream

    12/15

    interval started (i.e., from the first bi bytes of the song). A user can send data to anynumber of other users, but in order to send a piece of data to several users it needs to besent to each user individually.

    In order to minimize the risk for jitter, the system should make sure that each users

    buffer is as large as possible. Specifically, the goal is to make sure that after the secondhas passed, the minimum buffer size bi(pi+C) is as large as possible. Note that it maybe the case that this value is negative, indicating that it is impossible to avoid that someuser runs out of buffer during the one second interval.

    For simplicity, well assume that this takes place on the Interwebs of an alternate reality

    where upload speeds are completely captured by the ui parameters (e.g., they do notdepend on where the data is being uploaded to), and there are no such things as packet

    losses, slow ping times, or anything else that might make the idealized situation described

    here unrealistic.

    Input

    The first line of input contains two integers n (1n50000) and C (1C109).Then follow n lines. The ith of these lines contains the three integers pi, bi, ui withmeanings as described above. You may assume that 0pibi109, and 0ui109.

    Warning

    This problem has somewhat large amounts of input. We recommend you to make sure

    that your input is properly buffered in order to make the most of the few seconds of

    execution time that we give you.

    Output

    Output a single line containing an integerB, the maximum possible smallest buffer sizeafter one second.

    Sample Input 1 Sample Output 13 20

    50 70 10100 110 4

    150 190 16

    5

    Sample Input 2 Sample Output 24 100

    0 50 1000 50 100

    0 50 100

    1000 1500 100

    -17

  • 7/28/2019 All Just a Dream

    13/15

    Cat Coat Colors

    Problem id: catcoatTime limit: 1 seconds

    Memory limit: 2048 MB

    Photo by Pedro Ribeiro Simes (pedrosimoes7) on flickr

    The color of a cat is primarily decided by three genes, coding for Black (Eumelanin), Red

    (Phaeomelanin) and Dilution (Melanophilin). The cat genetics experts among the readerswill note that we are ignoring a wide range of genes, e.g., Tyrosinase and the white

    masking gene we apologize in advance for the oversimplifications that are to ensue.

    Black is usually written as B, Red as O, Dilution as D. In general, a cat has two copies of

    each gene, one from each parent (except for the red gene which is sex-bound, well return

    to that later). Each copy can be eitherdominant, which well denote using an upper case

    letter, orrecessive, which well denote using a lower case letter. Thus for each gene thereare three possibilities: either both copies of the gene are dominant, both are recessive, orone is dominant and the other is recessive. When describing a cat well write this as a pair

    of letters, with the second one possibly being a - to indicate a wildcard. For example,

    bb indicates that the cat has two recessive black genes, and B- indicates that the cat

    has a dominant black gene and that we dont care about whether the other one is

    dominant or recessive.

  • 7/28/2019 All Just a Dream

    14/15

    When a cat has no dominant red (O) gene, its coat will be a variation of black, according

    to the following four combinations:

    B-D-: Black B-dd: Blue

    bbD-: Chocolate bbdd: Lilac

    Now, red (O oro) is sex bound on the X chromosone. This means a male cat, or tom, only

    has a single red gene, while a female has two. Red dominates black, meaning that a cat

    having an O gene will always have red coloring. Like black, red is also affected by the

    dilution gene. For male cats, we have the following two possible red colors (here, theblack genes have no effect on the coat color):

    D-O: Red ddO: Cream

    For female cats the situation gets a bit more complicated. If the female has two O genes

    she will be be red, with variations depending on the dilution gene in exactly the same

    way as for male red cats:

    D-OO: Red ddOO: Cream

    However, a female cat with the Oo combination will have a partially black, partially red,

    coat. These cats are known as Torties (Tortoiseshells), and named after both their coat

    colours, starting with the black. The four possible Tortie colorings are thus as follows:

    B-D-Oo: Black-Red Tortie B-ddOo: Blue-Cream Tortie

    bbD-Oo: Chocolate-Red Tortie bbddOo: Lilac-Cream Tortie

    When a pair of cats have kittens, the offspring will get a random set of genes from theirparents according to the following simple process: for each gene, independendtly, one of

    the copies is selected uniformly at random from the fathers two copies, and the other

    copy is selected uniformly at random from the mothers two copies. For the red gene,

    there is a 50% chance that the offspring will be female in which case it will get thefathers red gene (and one of the mothers red genes at random), and a 50% chance that

    the offspring will be male in which case it will only get one of the mothers red genes (atrandom).

    Write a program which, given the colors of two cats, computes the most likely color for

    their offspring. For cats having a color where some genes do not affect the color, assume

    that the corresponding genes are uniformly random (over the two choices

  • 7/28/2019 All Just a Dream

    15/15

    dominant/recessive). For example, if a cat is red, you should assume that the possibilities

    DD and Dd for the dilution gene are equally likely, and that the four possibilities BB,

    Bb, bB and bb are equally likely for the black gene (but note that Bb and bB are

    equivalent).

    Input

    The input consists of two lines. The first line gives the color of the female cat, and thesecond line gives the color of the male cat. Each color is spelled and capitalized exactly

    as when it is listed above, and the color is valid (i.e., the male cat wont be a Tortie).

    Output

    Output a list of the possible color outcomes for the offspring of the two cats. Each line

    should contain a color followed by a number0