故事
你被F公司聘为项目负责人。你的工作是合理分配任务给团队成员。当前的项目包括多个任务。团队成员完成一个任务所需的天数取决于团队成员的技能水平和任务所需的技能水平。你有丰富的经验,可以准确估计每个任务所需的技能水平,但是由于你刚刚加入团队,你还不知道每个团队成员的技能水平。请在逐步评估团队成员的技能水平的同时,适当地分配任务。
问题陈述
你想将N个任务分配给M个团队成员。你可以将每个任务分配给至多一个团队成员,并且一旦你把任务分配给一个团队成员,直到他/她完成任务,你不能再给他/她分配另一个任务。共有K种技能。每个团队成员j有一个非负整数向量bmsj=(sj,1,cdots,sj,K)表示技能水平,每个任务i有一个非负整数向量bmdi=(di,1,cdots,di,K)表示所需的技能水平。其中,技能水平bms1,cdots,bmsM不作为输入给出。
我们定义wi,j:=sumk=1Kmax(0,di,k−sj,k)。然后,团队成员j完成任务i需要ti,j天,其中ti,j定义如下。
- 如果wi,j=0,则ti,j=1。
- 如果wi,j>0,则ti,j=max(1,wi,j+ri),其中ri是一个从-3到3之间(包括-3和3)的均匀随机整数。
当一个需要t天的任务在第d天开始时,任务将在第d+t-1天结束。任务之间存在依赖关系,在开始一个任务之前,它的所有依赖任务必须在前一天结束时已经完成。请尽量在较少的天数内完成所有任务。
输入和输出
有关每个输入值的范围,请参见输入生成。
在执行开始时,从标准输入中按照以下格式给出任务数量N,团队成员数量M,技能数量K,依赖关系数量R,每个任务的所需技能水平bmd1,cdots,bmdN,以及依赖任务对的列表(u1,v1),cdots,(uR,vR)。
N M K R
d1,1 cdots d1,K
vdots
dN,1 cdots dN,K
u1 v1
vdots
uR vR
(ui,vi)表示任务vi(1leqvileqN)依赖于任务ui(1lequileqN),并且必须在开始vi之前完成ui。满足ui<vi,且输入中最多只有一次出现相同的(ui,vi)对。
然后,从第1天开始,每天执行以下两个过程。
首先,按照以下格式,将每天团队成员ai(1leqaileqM)在当天开始任务bi(1leqbileqN)的一行对输出到标准输出。
m a1 b1 cdots am bm
**在输出之后,你必须刷新标准输出。**否则,提交可能会被判定为TLE(超时错误)。