#B6. 图书馆管理员
图书馆管理员
题目描述
小雅是一名图书馆管理员,她正在整理一批新到的书籍。每本书都有一个唯一的条形码编号(正整数)。为了快速查找,她决定使用一种特殊的“哈希链”存储方式。
规则如下:
- 有一个长度为 的数组
shelf,初始时所有位置均为 0(表示空)。 - 对于每本书的条形码编号 ,计算其初始位置 。
- 如果
shelf[pos]为空(即为 0),则将书放入该位置,即shelf[pos] = x。 - 如果
shelf[pos]非空,则发生“冲突”。此时需要寻找下一个可用位置:从 开始向后查找(如果超过 则回到 0,形成环形),直到找到第一个为空的位置为止,将书放入。 - 如果遍历完整个数组都没有找到空位(即数组已满),则该书无法入库,被丢弃。
小雅依次处理 本书,请你告诉她,最终有多少本书成功入库?以及最后 shelf 数组的状态是什么?
输入格式
第一行包含两个整数 ,分别表示书的数量和书架数组的长度。 第二行包含 个正整数,表示依次到来的书的条形码编号。
数据范围:
- 保证 的情况可能出现(即书比架子多)。
输出格式
第一行输出一个整数,表示成功入库的书本数量。
第二行输出 个整数,表示最终 shelf 数组的状态,数字之间用空格隔开。
5 3
1 4 7 2 5
3
7 1 4