AcWing 5377. 货运公司(Py3)
原题链接
困难
作者:
一介庸人
,
2024-04-07 12:20:12
,
所有人可见
,
阅读 16
if __name__=='__main__':
n=int(input())
orders=[]
for i in range(n):
c,p=map(int,input().split())
#添加每个订单的价格,重量,序号
orders.append((p,c,i+1))
k=int(input())
temp=list(map(int,input().split()))
trucks=[]
for i in range(k):#记录卡车的载重量和序号
trucks.append((temp[i],i+1))
#记录哪些卡车用过了
state= [False] * k
trucks.sort()
orders.sort(reverse=True)
result,cnt=0,0
arrangement=[]
#把订单按价值从大到小排列,货车按载重从小到大排列,
#对每个订单依次进行遍历,优先用小车,装贵的,
# 小车能装的大车肯定能装
for i in range(n):
if k==cnt:
break
weight=orders[i][1]
value=orders[i][0]
for j in range(k):
if trucks[j][0]>=weight and not state[j]:
result+=value
cnt+=1
state[j]=True
#存订单序号和卡车序号
arrangement.append((orders[i][2],trucks[j][1]))
break
print(cnt,result)
for i in arrangement:
print(i[0],i[1])