THU2017spring 1-3 Interview

Interview:https://dsa.cs.tsinghua.edu.cn/oj/problem.shtml?id=1631

描述

  某公司在对应聘者做过一轮笔试之后,从中选出n 人继续进行面试,每位应聘者被分配了一个整数ID。

  为公平起见,组织者决定利用会议室外的圆桌,按以下方法“随机”确定面试顺序:第一个到达的应聘者在圆桌周围任意选择一个位置坐下;此后到达的每位应聘者都从前一应聘者出发,沿逆时针方向围圆桌走过m 人(前一应聘者算作走过的第1 人,同一人可能经过多次),并紧邻第m 人右侧就座;所有应聘者到齐后,从最后到达者出发,绕圆桌以顺时针方向为序进行面试。

  这里假定应聘者到达的时刻互异,且相对的就坐位置确定后,左、右两人之间总能插入一把椅子。

  试编写一个程序,确定面试顺序。

输入

  共2行。

  第1行包含两个整数, n和m。

  第2行包含n个整数,表示先后到达的n个应聘者的ID。

输出

  共1行。以空格分隔的n个整数,分别表示顺次进行面试的应聘者的ID。

输入样例
5 3
6 7 8 9 10 
输出样例
10 6 8 9 7

限制

  1 ≤ n ≤ 10^3

  1 ≤ m ≤ 2*n

  输入的ID保证在int类型的范围内。

  时间:1 sec

  空间:256 MB

提示

一级提示

  ● 循环链表

二级提示

  ● 因为找座位按逆时针方向,面试按顺时针发现,所以建议使用双向循环链表。

  ● 往链表中插入元素时,要小心地修改前驱指针和后继指针。

  ● 一次性new n个节点,比分n次每次new一个节点快一些,但本题的数据规模不至于一定要这么做。

思路:比较简单,用个双端循环链表直接写就行了,做孩子逆时针,右孩子顺时针


github:https://github.com/Leputa/-THU-_PA1


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值