However I did write some interesting code to solve Problem C. It's in Python.
'''Output: Second line is one subset. Third line is another subset with the same sum. #### For the big input, you cannot find the solution in time. However, you can make the script read a part of the input set and hope you will still ger a solution. Set slice_index to a value between 100 and 500 to do it. Use None to read the whole input. ''' slice_index = 50 import itertools def solve(S): #S: the set of numbers subsets = (c for length in range(1,len(S)+1) for c in itertools.combinations(S,length) ) #finds a good subset pair result = ((i,j) for i,j in itertools.combinations(subsets,2) if sum(i)==sum(j) ) print "Case #%d:" % (test_case) #, no_new_line try: a, b = next(result) print ' '.join(map(str, a)) print ' '.join(map(str, b)) except StopIteration: print 'Impossible' #Input fin = open('big.in', 'r') fin.readline() for test_case, line in enumerate(fin, 1): line = map(int, line.split())[1:slice_index] solve(line)Here is the Contest Analysis.
No comments:
Post a Comment