輸入要求:第一行一個整數t表示有t個測試數據,第二行兩個整數,表示兩個數組的長度,接下來兩行表示兩個數字的值。最後一行有四個整數a,b,c,d。數組的長度不會超過1000。
輸出要求:每行一個整數,對應合併數組的下標在中間的那個值。
性能要求:在時間複雜度O(n)內完成這個計算任務。
答:實現代碼如下:
#include <stdio.h>
int main()
{
int n,a,b,i,k,m,x;
int b1,b2,e1,e2;
int s[1000],t[1000],p[1000]={0};
for(;~scanf("%d",&n);){
scanf("%d%d",&a,&b);
for(i=0;i<a;++i) scanf("%d",&s[i]);
for(i=0;i<b;++i) scanf("%d",&t[i]);
scanf("%d%d%d%d",&b1,&e1,&b2,&e2);
for(k=b1-1,m=0;k<=e1-1;p[s[k++]]=1,++m);
for(k=b2-1;k<=e2-1;p[t[k++]]=1,++m);
for(k=0,x=0;x<=m/2;k++) if(p[k]==1) ++x;
printf("%d\n",--k);
}
}
運行結果:
[img]http://dl.iteye.com/upload/attachment/605122/55a4cc25-2cea-393a-9abe-46fa863f1985.jpg[/img]