# igalarzab/progcontests

MarkDown to restructuredText and pep8

1 parent 6ff184e commit 8faedf550995a9c6297844cd3826a53f7b238830 committed Apr 14, 2012
 @@ -1,89 +0,0 @@ -Bot Trust -================== - -Description ------------- - -Blue and Orange are friendly robots. An evil computer mastermind has locked -them up in separate hallways to test them, and then possibly give them cake. - -Each hallway contains 100 buttons labeled with the positive integers {1, 2, -..., 100}. Button k is always k meters from the start of the hallway, and the -robots both begin at button 1. Over the period of one second, a robot can walk -one meter in either direction, or it can press the button at its position once, -or it can stay at its position and not press the button. To complete the test, -the robots need to push a certain sequence of buttons in a certain order. Both -robots know the full sequence in advance. How fast can they complete it? - -For example, let's consider the following button sequence: - - O 2, B 1, B 2, O 4 - -Here, O 2 means button 2 in Orange's hallway, B 1 means button 1 in Blue's -hallway, and so on. The robots can push this sequence of buttons in 6 seconds -using the strategy shown below: - - Time | Orange | Blue - ------------+------------------+----------------- - 1 | Move to button 2 | Stay at button 1 - 2 | Push button 2 | Stay at button 1 - 3 | Move to button 3 | Push button 1 - 4 | Move to button 4 | Move to button 2 - 5 | Stay at button 4 | Push button 2 - 6 | Push button 4 | Stay at button 2 - -Note that Blue has to wait until Orange has completely finished pushing O 2 -before it can start pushing B 1. - - -Input ---------- - -The first line of the input gives the number of test cases, T. T test cases -follow. - -Each test case consists of a single line beginning with a positive integer N, -representing the number of buttons that need to be pressed. This is followed by -N terms of the form "Ri Pi" where Ri is a robot color (always 'O' or 'B'), and -Pi is a button position. - - -Output -------- - -For each test case, output one line containing "Case #x: y", where x is the -case number (starting from 1) and y is the minimum number of seconds required -for the robots to push the given buttons, in order. - - -Limits -------- - - 1 <= Pi <= 100 for all i. - -Small dataset - - 1 <= T <= 20. - 1 <= N <= 10. - -Large dataset - - 1 <= T <= 100. - 1 <= N <= 100. - - -Sample --------- - -Input - - 3 - 4 O 2 B 1 B 2 O 4 - 3 O 5 O 8 B 100 - 2 B 2 B 1 - -Output - - Case #1: 6 - Case #2: 100 - Case #3: 4
 @@ -0,0 +1,92 @@ +Bot Trust +========= + +Description +----------- + +Blue and Orange are friendly robots. An evil computer mastermind has locked them +up in separate hallways to test them, and then possibly give them cake. + +Each hallway contains 100 buttons labeled with the positive integers ``{1, 2, +..., 100}``. Button ``k`` is always ``k`` meters from the start of the hallway, +and the robots both begin at button 1. Over the period of one second, a robot +can walk one meter in either direction, or it can press the button at its +position once, or it can stay at its position and not press the button. To +complete the test, the robots need to push a certain sequence of buttons in +a certain order. Both robots know the full sequence in advance. How fast can +they complete it? + +For example, let's consider the following button sequence:: + + O 2, B 1, B 2, O 4 + +Here, ``O 2`` means button 2 in Orange's hallway, ``B 1`` means button 1 in +Blue's hallway, and so on. The robots can push this sequence of buttons in +6 seconds using the strategy shown below:: + + Time | Orange | Blue + ------------+------------------+----------------- + 1 | Move to button 2 | Stay at button 1 + 2 | Push button 2 | Stay at button 1 + 3 | Move to button 3 | Push button 1 + 4 | Move to button 4 | Move to button 2 + 5 | Stay at button 4 | Push button 2 + 6 | Push button 4 | Stay at button 2 + +Note that Blue has to wait until Orange has completely finished pushing ``O 2`` +before it can start pushing ``B 1``. + + +Input +----- + +The first line of the input gives the number of test cases, ``T``. ``T`` test +cases follow. + +Each test case consists of a single line beginning with a positive integer +``N``, representing the number of buttons that need to be pressed. This is +followed by ``N`` terms of the form ``Ri Pi`` where ``Ri`` is a robot color +(always ``O`` or ``B``), and ``Pi`` is a button position. + + +Output +------- + +For each test case, output one line containing ``Case #x: y``, where ``x`` is +the case number (starting from 1) and ``y`` is the minimum number of seconds +required for the robots to push the given buttons, in order. + + +Limits +------ + +General:: + + 1 <= Pi <= 100 for all i. + +Small dataset:: + + 1 <= T <= 20. + 1 <= N <= 10. + +Large dataset:: + + 1 <= T <= 100. + 1 <= N <= 100. + + +Sample +------ + +Input:: + + 3 + 4 O 2 B 1 B 2 O 4 + 3 O 5 O 8 B 100 + 2 B 2 B 1 + +Output:: + + Case #1: 6 + Case #2: 100 + Case #3: 4
7 codejam/2011-bot_trust/sol.py
 @@ -10,6 +10,7 @@ import sys + def solve(movements): copy = movements[:] blue, orange = ([], []) @@ -30,7 +31,7 @@ def solve(movements): bpos += 1 elif blue and bpos > movements[blue[0]][1]: bpos -= 1 - else: # == + else: # == if copy and copy[0][0] == 'B': mblue = True @@ -65,7 +66,7 @@ def solve(movements): for i in xrange(cases): line = sys.stdin.readline().split()[1:] - movs = [(line[j], int(line[j+1])) for j in xrange(0, len(line), 2)] - print("Case #%d: %d" % (i+1, solve(movs))) + movs = [(line[j], int(line[j + 1])) for j in xrange(0, len(line), 2)] + print("Case #%d: %d" % (i + 1, solve(movs))) # vim: ai ts=4 sts=4 et sw=4
 @@ -1,23 +1,23 @@ Candy Splitting -================ +=============== Description ------------- +----------- Sean and Patrick are brothers who just got a nice bag of candy from their parents. Each piece of candy has some positive integer value, and the children -want to divide the candy between them. First, Sean will split the candy into -two piles, and choose one to give to Patrick. Then Patrick will try to -calculate the value of each pile, where the value of a pile is the sum of the -values of all pieces of candy in that pile; if he decides the piles don't have -equal value, he will start crying. +want to divide the candy between them. First, Sean will split the candy into two +piles, and choose one to give to Patrick. Then Patrick will try to calculate the +value of each pile, where the value of a pile is the sum of the values of all +pieces of candy in that pile; if he decides the piles don't have equal value, he +will start crying. - Unfortunately, Patrick is very young and doesn't know how to add properly. He +Unfortunately, Patrick is very young and doesn't know how to add properly. He almost knows how to add numbers in binary; but when he adds two 1s together, he always forgets to carry the remainder to the next bit. For example, if he wants to sum 12 (1100 in binary) and 5 (101 in binary), he will add the two rightmost bits correctly, but in the third bit he will forget to carry the remainder to -the next bit: +the next bit:: 1100 + 0101 @@ -26,7 +26,7 @@ the next bit: So after adding the last bit without the carry from the third bit, the final result is 9 (1001 in binary). Here are some other examples of Patrick's math -skills: +skills:: 5 + 4 = 1 7 + 9 = 14 @@ -41,52 +41,53 @@ possible value of Sean's pile. Input ----------- +----- -The first line of the input gives the number of test cases, T. T test cases -follow. Each test case is described in two lines. The first line contains a -single integer N, denoting the number of candies in the bag. The next line -contains the N integers Ci separated by single spaces, which denote the value -of each piece of candy in the bag. +The first line of the input gives the number of test cases, ``T``. ``T`` test +cases follow. Each test case is described in two lines. The first line contains +a single integer ``N``, denoting the number of candies in the bag. The next line +contains the ``N`` integers ``Ci`` separated by single spaces, which denote the +value of each piece of candy in the bag. Output --------- +------ -For each test case, output one line containing "Case #x: y", where x is the -case number (starting from 1). If it is impossible for Sean to keep Patrick -from crying, y should be the word "NO". Otherwise, y should be the value of the -pile of candies that Sean will keep. +For each test case, output one line containing ``Case #x: y``, where ``x`` is +the case number (starting from 1). If it is impossible for Sean to keep Patrick +from crying, ``y`` should be the word ``NO``. Otherwise, ``y`` should be the +value of the pile of candies that Sean will keep. Limits ------- +General:: + 1 <= T <= 100. 1 <= Ci <= 106. -Small dataset +Small dataset:: 2 <= N <= 15. -Large dataset +Large dataset:: 2 <= N <= 1000. Sample ----------- +------ -Input +Input:: 2 5 1 2 3 4 5 3 3 5 6 -Output +Output:: Case #1: NO Case #2: 11 -
8 codejam/2011-candy_splitting/sol.py
 @@ -10,21 +10,21 @@ import sys + def solve(movements): - if reduce(lambda x,y: x^y, movements): + if reduce(lambda x, y: x ^ y, movements): return "NO" movements.sort() return str(sum(movements[1:])) - if __name__ == '__main__': cases = int(sys.stdin.readline()) for i in xrange(cases): - ncandies = int(sys.stdin.readline()) # Ignore :P + ncandies = int(sys.stdin.readline()) # Ignore :P candies = map(int, sys.stdin.readline().split()) - print("Case #%d: %s" % (i+1, solve(candies))) + print("Case #%d: %s" % (i + 1, solve(candies))) # vim: ai ts=4 sts=4 et sw=4