题目描述 已知数组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 }
浙公网安备 33010602011771号