练习2

599 阅读2分钟

有M台服务器资源,每台服务器包含属性:编号(整数),CPU核数(1-100),内存(10-1000),CPU架构(0~8),是否支持NP加速卡标识(0,1)。

请根据资源分配要求分配N台满足要求的服务器。资源分配要求: CPU核数>=cpuCount,内存>=memSize, CPU架构=cpuArch, 是否支持NP卡=supportNP。其中,cpuCount、memSize、cpuArch、supportNP为输入 的分配参数。 分配时同时会指定优选级策略strategy,策略如下: 策略1:CPU优先,表示优选CPU核数满足分配要求并最接近分配要求的cpuCount。当CPU核数相同时,再按内存满足要求并最接近memSize的服务器分配。 策略2:内存优先,表示优选内存满足分配要求并最接近分配要求的memSize。当内存相同时,再按CPU核数满足要求并最接近cpuCount的服务器分配。 如果两台服务器属性都相同,则按服务器编号从小到大选择(编号不会重复)

输入描述: 第一行服务器数量M台

接下来M行为M台服务器属性的数组,如样例1

紧接下一行为分配要求:最大分配数量N,分配策略strategy,cpuCount,memSize,cpuArch,supportNP。以空格间隔。

其中: 1 <= M <= 1000

1 <= N <= 1000

strategy: 1表示策略1,2表示策略2

1 <= cpuCount <= 100

10 <= memSize <= 1000

0 <= cpuArch <= 8,另外,cpuArch使用9表示所有CPU架构都满足分配要求

0 <= supportNP <= 1,另外,supportNP为2时表示不论是否支持NP卡都满足分配要求

输出:

先输出实际分配数量,后按分配的服务器编号从小到大依次输出,以空格间隔

示例:

输入:

4 
0,2,200,0,1 
1,3,400,0,1 
2,3,400,1,0 
3,3,300,0,1 
3 1 3 200 0 1

输出:

2 1 3