问题标题: 酷町堂:4008 站队啦2

0
0
已解决
李显晨
李显晨
中级启示者
中级启示者

题目描述 Description

体育课上,老师将全班的同学(3*n个人)分成三个队伍1,2,3 各自按照身高进行排序(队伍1、2、3已经有序)。老师准备通过插队的方式,将三个队伍合并成一个按照身高升序的队伍。 每次先从队伍1中选出一个人放入队伍2中,再从队伍3中选出一个人放入队伍2中,请你编程帮老师算一算,在第m次后队伍的顺序是怎样的。

输入描述 Input Description

第一行输入两个整数n,m(n<=4000,m<=8000)
第二行输入n个空格隔开的整数,表示队伍1的序列
第三行输入n个空格隔开的整数,表示队伍2的序列
第四行输入n个空格隔开的整数,表示队伍3的序列

输出描述 Output Description

输出第m次插队后的队伍2

样例输入 Sample Input

5 3

1 3 5 7 9

2 4 6 8 10

11 12 13 14 15

样例输出 Sample Output

1 2 3 4 6 8 10 11

 

求思路和核心代码!!!


0
已采纳
李素妍
李素妍
新手天翼
新手天翼
  • for(int i=n+1;i<=n+2*n;i+=2) cin>>a[i];
  • for(int i=1;i<=n;i++) cin>>a[i];
  • for(int i=n+2;i<=n+2*n;i+=2) cin>>a[i];
  • for(int i=n+1;i<=n+m;i++){
  • key=a[i];
  • j=i-1;
  • while(j>=1 && key<a[j]){
  • a[j+1]=a[j];
  • j--;
  • }
  • a[j+1]=key;
  • }
  • for(int i=1;i<=n+m;i++) cout<<a[i]<<" ";
0
李素妍
李素妍
新手天翼
新手天翼
  • for(int i=n+1;i<=n+m;i++){
  • key=a[i];
  • j=i-1;
  • while(j>=1 && key<a[j]){
  • a[j+1]=a[j];
  • j--;
  • }
  • a[j+1]=key;
  • }
0
0
0
0
我要回答