已知两个严格单调递增的表a(长度为n,n≤10000)和表b(长度为m,m≤10000),其中数据均为正整数,将其合并成一个严格单调递增的表c。
输入格式
输入为3行,第一行两个数n和m,表示序列的长度。第二行是一个长度为n的表a,第三行是长度为m的表b。
输出格式
输出合并后的表c
#include<stdio.h>
#include<stdlib.h>
#define N 10010
typedef struct{
int elem[N];
int length;
}List;
void read(List*t){
int i=0;
while(i<t->length){
scanf("%d",&t->elem[i++]);
}
}
void print(List *L)
{
for(int i=0;i<L->length;i++){
if(L->elem[i]==L->elem[i+1]){
i++;
}
printf("%d ",L->elem[i]);
}
}
int main(){
List X,Y,Z;
scanf("%d %d",&X.length,&Y.length);
read(&X);
read(&Y);
int i=0,j=0,k=0;
while(i<X.length&&j<Y.length){
if(X.elem[i]<Y.elem[j]){
Z.elem[k]=X.elem[i];
i++;
k++;
}else{
Z.elem[k]=Y.elem[j];
k++;
j++;
}
}
while(j<Y.length){
Z.elem[k]=Y.elem[j++];
k++;
}
while(i<X.length){
Z.elem[k]=X.elem[i++];
k++;
}
Z.length=k;
print(&Z);
return 0;
}