选班长
题目描述
为了防止后排的同学开小差,老师安排所有的同学都坐在第一排。
班上原有 N 个同学,按照入学时间,第 i 个同学的学号是 i,对应的位置是 Xi。
为了收作业方便,老师希望班长的位置到所有同学的位置的距离总和尽量小(如果有多个同学的位置满足最小距离总和,班长总是被选为最早入学的那个)。
每次有同学转学加入,学号是使用当前最小未被分配的编号(比如下一个同学转学加入,他的学号会是 N+1),并且被安排到位置 Yi 就坐。
随着新同学加入,老师会重新选择班长,使得收作业要求(即班长的位置到所有同学的位置的距离总和尽量小)仍然得到满足。
问每次新同学加入后,应该选择哪位同学做班长。
输入格式
第一行有一个数 N,代表班上原有同学的人数。
接下来一行有 N 个数,Xi 表示班上第 i 个同学的位置,学号对应是 i。
接下来一行有一个数 M,表示会有 M 个同学转学加入。
接下来一行有 M 个数,Yi 表示新转学加入的同学的位置,学号对应是 N + i。
输出格式
输出 M 个数,分别代表第 i 个同学转学加入后,被重新选为班长的同学的学号。
输入输出样例
输入 #1
2
1 2
4
4 3 5 6
输出 #1
2
2
4
3
说明/提示
对于 20% 的数据,满足 N < 100, M < 100;
对于 40% 的数据,满足 N < 1000, M < 1000;
对于所有的数据,满足 N < 100000, M < 100000;
所有 Xi、Yi 均不相等,且满足0 < Xi,Yi < 1000000000。