Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import argparse
- import random
- def parse(inp):
- # TODO: implement
- itr = (map(int, li.split()) for li in inp.split('\n'))
- r, s, u, p, m = next(itr)
- ulist = []
- mlist = []
- for i in range(u):
- ri, si = next(itr)
- ulist.append((ri,si))
- for i in range(m):
- zi,ci = next(itr)
- mlist.append((zi,ci))
- return argparse.Namespace(r=r, s=s,u=u,p=p,m=m,ulist=ulist,mlist=mlist)
- def solve(seed, inp, log):
- # TODO: Solve the problem
- random.seed(seed)
- ns = parse(inp)
- if (True):
- return """0 1 0
- 1 0 1
- 1 3 0
- 0 4 1
- x"""
- return '0'
- def show(out):
- # TODO: Print the solution here
- print(out)
- def outparse(inp,m):
- itr = inp.split('\n')
- places = []
- for i in range(m):
- if itr[i] != 'x':
- ari, asi, api = [int(x) for x in itr[i].split()]
- places.append((ari,asi,api))
- return argparse.Namespace(places=places)
- def score(inp, out):
- # TODO: implement
- ns = parse(inp)
- outs = outparse(out,ns.m)
- pools = [[] for i in range(ns.p)]
- for indx, tup in enumerate(outs.places):
- pools[tup[2]].append((tup[0],tup[1],indx))
- mintotal = 100000000000
- for pool in pools:
- totalcapacity = 0
- for tup in pool:
- totalcapacity += ns.mlist[tup[2]][1]
- maxremove = 0
- for row in range(ns.r):
- thisremove = 0
- for tup in pool:
- if (tup[0] == row):
- thisremove += ns.mlist[tup[2]][1]
- maxremove = max(maxremove,thisremove)
- mintotal = min(mintotal,totalcapacity-maxremove)
- if __name__ == '__main__' and args.s:
- show(out)
- return mintotal
- def get_args():
- parser = argparse.ArgumentParser()
- parser.add_argument('inp')
- parser.add_argument('ans')
- parser.add_argument('-s', action='store_true', help="show")
- return parser.parse_args()
- if __name__ == '__main__':
- args = get_args()
- with open(args.inp, 'r') as f:
- inp = f.read()
- with open(args.ans, 'r') as f:
- ans = f.read()
- print(score(inp, ans))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement