题目描述
已知数组a中有m个按升序排列的元素,数组b中有n个按降序排列的元素,编程将a与b中的所有元素按降序存入数组c中。

输入
输入有两行,第一行首先是一个正整数m,然后是m个整数;第二行首先是一个正整数n,然后是n个整数,m, n均小于等于100000。

输出
输出合并后的m+n个整数,数据之间用空格隔开。输出占一行。

样例输入
复制
4 1 3 5 7
3 6 4 2
样例输出
复制
7 6 5 4 3 2 1

代码:

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<map>
 4 #include<string>
 5 #include<iostream>
 6 using namespace std;
 7 #define N 100010
 8 int a[N],b[N],c[N];
 9 int main()
10 {
11     int n,m,i,k,q,p;
12     scanf("%d",&n);
13     for(i=0; i<n; i++)
14         scanf("%d",&a[i]);
15     scanf("%d",&m);
16     for(i=0; i<m; i++)
17         scanf("%d",&b[i]);
18     p=n-1;
19     q=0;
20     k=0;
21     while(p>=0&&q<m)
22     {
23         if(a[p]>=b[q])
24         {
25             c[k++]=a[p];
26             p--;
27         }
28         else
29         {
30             c[k++]=b[q];
31             q++;
32         }
33     }
34     if(p>=0)
35     {
36         for(i=p; i>=0; i--)
37             c[k++]=a[i];
38     }
39     if(q<m)
40     {
41         for(i=q; i<m; i++)
42             c[k++]=b[i];
43     }
44     for(i=0; i<k; i++)
45         printf("%d%c",c[i],i==k-1?'\n':' ');
46     return 0;
47 }