def 计算空闲分区数量(进程数量, 分配信息, 回收进程): 进程映射 = {} for i in range(进程数量): 起始地址 = 分配信息[i*2] 大小 = 分配信息[i*2+1] 进程映射[f'p{i+1}'] = (起始地址, 大小) 回收列表 = 回收进程.split() for 进程 in 回收列表: if 进程 not in 进程映射: return "false" 已分配区域 = [] for i in range(进程数量): 进程 = f'p{i+1}' if 进程 not in 回收列表: 起始地址, 大小 = 进程映射[进程] 已分配区域.append((起始地址, 起始地址 + 大小)) if not 已分配区域: return 1 已分配区域.sort() 空闲数量 = 1 if 已分配区域[0][0] > 0: 空闲数量 = 1 else: 空闲数量 = 0 for i in range(len(已分配区域)-1): if 已分配区域[i+1][0] > 已分配区域[i][1]: 空闲数量 += 1 if 已分配区域[-1][1] < 512: 空闲数量 += 1 return 空闲数量 进程数量 = int(input()) 分配信息 = list(map(int, input().split())) 回收进程 = input() print(计算空闲分区数量(进程数量, 分配信息, 回收进程))