master
parent
f96286b520
commit
b01519800c
|
@ -0,0 +1,9 @@
|
|||
from __future__ import print_function
|
||||
import sys
|
||||
|
||||
n, m = map(int, sys.stdin.readline().split())
|
||||
M = [ map(int, line.split()) for line in sys.stdin ]
|
||||
S = set()
|
||||
|
||||
for i, j in M:
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
from __future__ import print_function
|
||||
import sys, math
|
||||
|
||||
def val(c,f,u):
|
||||
a, b = c - min(c, f), f - min(c, f)
|
||||
if u > b - a:
|
||||
return b + (lambda x: x//2+1 if x%2==0 and x!=0 else int(math.ceil(x/2.0)))(u - b)
|
||||
else:
|
||||
return None
|
||||
|
||||
s = int(sys.stdin.readline())
|
||||
D = []
|
||||
n = 0
|
||||
|
||||
for d,c,f,u in ( map(int, line.split()) for line in sys.stdin ):
|
||||
n += d; x = val(c,f,u)
|
||||
if x is not None: D.append((d,x))
|
||||
|
||||
# print(D)
|
||||
|
||||
m = n//2+1
|
||||
C = [ [0,set()] for i in xrange(n+1) ]
|
||||
|
||||
for i in xrange(n+1):
|
||||
xs = [ (C[i-D[j][0]], j, D[j][1]) for j in xrange(len(D))
|
||||
if D[j][0] <= i and j not in C[i-D[j][0]][1] ]
|
||||
# print("i = ", i, " xs = ", xs)
|
||||
if xs:
|
||||
c, j, cost = min(xs, key = lambda x: x[2])
|
||||
C[i] = c[:]
|
||||
C[i][0] += cost
|
||||
C[i][1] = C[i][1].copy(); C[i][1].add(j)
|
||||
else:
|
||||
C[i] = C[i-1]
|
||||
# print(C[i])
|
||||
|
||||
# print(m, n)
|
||||
# for c in C: print(c)
|
||||
|
||||
for i in xrange(n+1):
|
||||
cost, delegates = sum( D[j][1] for j in C[i][1] ), sum( D[j][0] for j in C[i][1] )
|
||||
if delegates >= m:
|
||||
print(cost)
|
||||
sys.exit(0)
|
||||
print("impossible")
|
Loading…
Reference in New Issue