Starting from:

$30

Algorithm Homework 4 Solved

CIMS Printer
 

Due      to         some     reason   there     is          only      one       printer   still        working  at         Courant Institute of         Mathematical      Sciences.           There            are        tons      of printing           jobs      queuing for        that       printer   and       you       may      have     to         wait       for        a          very      very            long      time      to         get        your      paper    printed.

Printing  jobs      are        assigned            a          priority   between 1          and       9          (inclusive)          where    9          is          highest  priority   and       1            is          the        lowest.   The       printing system    manages            the        jobs      as         follows.

 Select the        first       job        from      the        queue.

If        there     is          some     job        in          the        queue    with       higher    priority   than      the        selected job        then      move     the        selected job         to         the        end       of         the queue           without  printing  it. Otherwise,      print      that       job.

Now      your      problem is          that       it          becomes            so         tricky     to         determine           when     your      paper    will        be         printed.  You            are        to         write      a          program to figure it          out.       The       program is          given     the        current   printing  queue    and       the            position  of         you       job        in          the        queue.   It          should   output    how long            it          will        take      until      your      paper    is            printed.  Assume that       there     are        no         additional           jobs      added    to         the        queue    and       printing  a          single job           takes            exactly   one       minute   (regardless         of         its         size)      and       that       the        queue    operations          happen  instantly (i.e.,      there     is            no additional       time      spent     on         them).

Input
The                                                       first line   of  input contains two integers       N    and  M where N stands  for the    number  of         jobs      in          the        print                                                           queue (

1              <=              N               <=              100 )      and       M         is          the        position  of         your      job        (0               <=              M              <=              N               -                 1 ;            with       0          being     the        first       position  in          the        queue). The        second  line       has       N          integers in          the        range,   giving            the        priorities of         jobs      in          the        queue    from      the        first       position  to         the        last.

Output

You       should   print      one       line       with       a          single    number, the        number  of         minutes until      your      job        is          printed.

Example            1
 

Example            2
 

Example            3
 

Page          1/1

Ferry
 Ferries   used     to         carry     cars      across   the river. In         your      village,   there     is          still        a          ferry that can       take      up         to         N            cars      and       needs    

T         minutes to         cross     the        river.     A          car        may arrive          at         either    river      bank     and       wait       to         be carried           to            the        opposite bank.     The       ferry operates     continuously       between the banks           as         long      it          is          carrying at         least      one car        or         there     is          at         least      one       car        waiting   on either side.      Whenever          the        ferry      arrives   at one    bank,     it            unloads cars      carried   and loads           up         to         N          cars      waiting   at         that       bank. When        there     are        more     than      N            cars waiting,       they      are        loaded   on         the        firstcome-first-serve          basis.    If          there     is          no         car waiting          on         either            bank,     the        ferry      stops and           waits     until      one       car        arrives.  The       ferry is   initially   on         the        left        bank.     You       are            asked to answer  at         what      time      does     each     car arrive           at         the        other     bank.

Input
The       first       line       of         input     contains three integers      N ,         T           and       M         (

1              <=              N,              T,               M              <=              10,000 ). Each of  the        following M         lines      gives     the        arrival time         of         a          car        and            the        bank     at         which    the car   arrives   ( left      or         right ).    The       cars      are        ordered  by         their      arrival    times     (so        the            arrival    times     are        non-decreasing)  and the  time      spent     on         loading  and       unloading           can       be         ignored.

Output
For       each     car,       you       should   print      one       line       containing          one       number, the        time      at         which    the        car        is            unloaded            at         the        opposite bank. Example   1

 Input:

2         10             10 0          left

10      left

20      left

30      left

40      left

50      left

60      left

70      left

80      left

90      left

Output:

10

30

30

50

50

70

70

90

90

110


 
 
 

Example            2
 


Line  Up
Queuing,            it’s        what      the        British    are        renowned           for        doing     -           and       doing     very      well.      Better    than      anyone  else            in          the        world,    if reputation        is          to         be         believed.            Today,   queues  can       be         found    just       about    anywhere            (even    in          the        virtual    world).

 Standard            Queues are        well       known   to         most     computer science students.            It’s        a          first-in-first-out     data      structure. Kobayashi            is          already  familiar  with       it.          But       she       is assigned         to         write      some     code     to         maintain a          variant   of Standard            Queues: Group   Queues.

In         a          group    queue    each     element belongs to         a          group.   If an      element is          pushed  to         the        queue    and       there     is            no element         that       belongs to         the        same     group    in          the        queue, it will        be         placed   behind   the        last       element in            the        queue. Otherwise,            if          there     are        already  some     elements            that belong         to         the        same     group,   it            should   be         placed immediately          behind   them.

Dequeuing         works    the        same     as         int         the        standard queue:   We       will        remove  the        first       element according           to         the            current   order     from head          to         tail        in          the        queue.

Kanna   is          preparing           for        her        school’s Sports   Festival, and       she       wants    Kobayashi          to         come     to         this       important            event.    But Kobayashi     will        not        be         able      to         attend    unless   she       can       finish     her        program early.     As        Kobayashi’s            colleague           and       close     friend,    you decide         to         help      her.       You       need     to         write      a          program that       simulates            such      a          group    queue.

Input
The                                     1st line                                         contains    an         integer   n          ( 1             <=              n                <=              1,000 )   equal     to         the                                       number                                               of        groups,  as         described           above.

Then     n          group    descriptions        follow.   Each     group    is          described           on         one       line       by         an         integer   k           (the            number  of         elements belonging          to         the        group)   followed by         k           integers (the       indexes  of         the        elements            in            this       group).

Elements                                                                                      are                                    indexed          with    integer   in          the        range    [                 0                                                                                                                                                       ,                                                          999,999                    ] .    And       a          group    may      consist   of                                                                                                   up                                         to            1,000    elements.

Finally,  a          list        of         commands         follows.  There    are        3          different kinds     of         commands:

             Push                                    ind                       :               Push      the        element with       index     ind        into       the        group    queue.

        Pop                                      :        Output   the        first       element and       remove  it          from      the        queue.

         Shutdown                         : Stop      your      program (end      of         input).

There    may      be         up         to         200,000  commands         in          the        input     file,       so         the        implementation    of         the        group            queue    should   be         efficient: both      enqueuing          and       dequeuing          of         an         element should   only      take      a          constant time. Output

For       each     Pop       command,          print      an         integer,  the        index     of         the        element which    is          dequeued,          followed by         a            newline. Example            1

 Input:

2

3         1                2                3

3         4                5                6

Push 1

Push 4

Push 2

Push 5

Push 3

Push 6

Pop

Pop

Pop

 

Example            2
 

Labor         Strike
There    are        n          labor     unions   in          New      York      City.      You       have     learned  that       the        labor     union     i           will        undertake            a          strike     every     s_i days.

For       example,            assume the        1st        day       is          Sunday, and       labor     union     1          undertakes         a          strike     ever      4          days.            Then     there     will        be         a          strike on the        4th        day       (the       Wednesday),      the        8th        day       (following           Sunday) and            so         forth.     (See      the        table     below.)

Because the        MTA      employees         support  all         the        unions,  the        subways do         not        work      if          at         least      one       of         the            unions   is          on         strike.    The only exception           to         this       are        Fridays  and       Saturdays:          even     if          a          union     has            a          planned strike     for        that       day,      the        subways will        still operate         as         usual.

You                                                                                                                    need to figure    out        the        number  of         days      that       you       can                                                                                                                          not take           the        subway  in          the        following m          days.

You       can       assume the        1st        day       is          always   Sunday.

 

Input
The       1st        line       contains an         integer   m          ( 7             <=              m               <=              3650 )    equal     to         the        number  of         days      for        which            you       wish      the        make     the calculation.

The                                             next                                       line        contains another  integer   n          ( 1             <=              n                <=              100 )      representing                                                   the number                               of         labor     unions.

The       i-th        of         the        next      n          lines      contain  a          positive  integer   s_i         (which   will        never    be         a          multiple  of         7)            giving    the        striking  period    of labor  union     i.

Output
Output   one       integer   followed by         a          newline: the        total      number  of         days      with       strikes.

Example            1          (shown  in          the        table     above)

 

8th,       9th,       and       12th      days      (since    the        6th        day       is          a          Friday).

Example            2
 


Ruthless    War
Light     Kingdom is          fighting  a          ruthless war       against  Conflict  Empire.  As        a          general  of         Light     Kingdom,           you       decided to            attack    the enemy          with       a          linear     formation           of         soldiers. You       ordered  that       each     soldier   in          the        attack    line            should   protect   their      two       nearest neighbors            in          the        line.      These    two       neighbors           are        called    pals.      Note      that            the        leftmost soldier   does     not        have     a          left        pal        and       the rightmost       soldier   does     not        have     a          right      pal.            If          the        either    of         the        pals      of         a          soldier   is          killed,    then      the        next      living     neighbor to         the left/right            becomes            that       soldier’s new      pal.

As        the        time      passes,  the        battle     becomes            much     more     fierce     and       many     soldiers  are        being     killed     by         light            sabers,  blaster   pistols and          magical  spells.   In         order     to         keep     soldier   aware    of         their      pals      you       need     to            update   them     about    their      new      pals      after      receiving each     loss       report.

Input
The       first       line       of         input     contains two       integers N          and       M         ( 1             <=              N               <=              M              <=              100,000 ) representing            the        number  of soldiers          in          the        attack    line       and       the        number  of         loss       reports   respectively.       Soldiers are            numbered          from      1          to         N          according           to their   positions in          the        attack    line       where    1          identifies the            leftmost soldier   and       N          identifies the        rightmost            soldier.  Each     of         the following       M         lines      describes           a          loss            report    and       contains two       integers L           (left)      and       R          (right),   meaning that       soldiers  from      L to        R          were     killed     ( 1                  <=              L                <=              R                <=              N ).        It          is          guaranteed         that       those     soldiers  were     alive      until      that       moment.

Output
You       should   print      M         lines.     In         the        i-th        line       should   contain  the        new      pal        relationships       formed   after      removing            from      the        attack    line the  soldiers  who      were     killed     according           to         the        i-th        loss       report.   That      is,         for        the            loss       report    L                R ,         print      the        first       living     soldier   to the    left        of         L           and       the        first       living     soldier   to            the        right      of         R .         If          there     is          no         surviving soldier   in          some     direction,            print      the        character *            instead.

Example            1
 

 

 

More products