1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
typedef struct { int *elem; int length;
}sqlist;
//初始化空表 void init(sqlist *L,int n) {
L->elem=(int *)malloc(sizeof(int)*n); L->length=0;
}
//读取 void read(sqlist *L,int n) { L->length=n; for(int i=0;i<n;i++) { scanf("%d",&L->elem[i]); } }
//合并 void merge(sqlist la,sqlist lb,sqlist *lc) {
lc->length=la.length*2; int i=0,j=0,k=0; while(i<la.length&&j<lb.length) { if(la.elem[i]<=lb.elem[j]) lc->elem[k++]=la.elem[i++]; else lc->elem[k++]=lb.elem[j++]; } while(i<la.length) { lc->elem[k++]=la.elem[i++]; } while(j<lb.length) { lc->elem[k++]=lb.elem[j++]; } }
int main() { int n; scanf("%d",&n); sqlist la,lb,lc; init(&la,n); init(&lb,n); init(&lc,n+n); read(&la,n); read(&lb,n); merge(la,lb,&lc); printf("%d",lc.elem[(lc.length-1)/2]); return 0; }
|