THU2015 fall 1-3 Interview

来源:互联网 发布:apache tomcat 7.0.57 编辑:程序博客网 时间:2024/04/30 10:39

THU2015 fall 1-3 Interview


描述

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

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

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

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

输入

  共2行。

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

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

输出

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

输入样例

53678910

输出样例

10 6 8 9 7

限制

  1 ≤ n ≤ 10^3

  1 ≤ m ≤ 2*n

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

  必须使用链表实现。

  时间:1 sec

  空间:256 MB

提示

一级提示

  循环链表


代码如下:

#include <stdio.h>#include <stdlib.h>const int SZ = 1 << 20;  //提升IO buff struct fastio{char inbuf[SZ];char outbuf[SZ];fastio(){setvbuf(stdin, inbuf, _IOFBF, SZ);setvbuf(stdout, outbuf, _IOFBF, SZ);}}io;typedef struct Line{Line *prov,*next;int id;}Line;int main(){int n, m;scanf("%d %d", &n, &m);Line *head = (Line *)malloc(sizeof(Line));head->next = head;head->prov = head;scanf("%d", &head->id);Line *p = (Line *)malloc(sizeof(Line));p = head;for (int i = 1; i < n; i++){Line *one = (Line *)malloc(sizeof(Line));int t = m;scanf("%d", &one->id);while (t--) p = p->next;one->next = p->next;one->prov = p;p->next->prov = one;p->next = one;}p = p->next;while (n--){printf("%d ", p->id);Line *tmp = p;p = p->prov;free(tmp);}//system("pause");return 0;}



0 0
原创粉丝点击