九度 1097 取中值
不需要排队
两种:
1.数组
#include <iostream> using namespace std; int p1[1000002],p2[1000002],p3[1000002]; int main() { int i,j,k, n,len1,len2,a,b,c,d; cin>>n; for(i=0;i<n;i++) { cin>>len1>>len2; for(j=0;j<len1;j++) cin>>p1[j];//p1ÊǵÚÒ»¸ö´® for(j=0;j<len2;j++) cin>>p2[j];//p2Êǵڶþ¸ö´® cin>>a>>b>>c>>d;//ÌâÄ¿ÖеÄ4¸öÁ¿ for(k=0,j=a-1;j<b;k++,j++) p3[k]=p1[j];//p3ÊÇ×éºÏÆðÀ´µÄ´® for(j=c-1;j<d;k++,j++) p3[k]=p2[j]; cout<<p3[(k-1)/2]<<endl; } return 0; }
2.指针
#include<iostream> #include<stdio.h> #include<malloc.h> #include<algorithm> using namespace std; int main() { int t,len1,len2,a,b,c,d; int *array1,*array2,*array3; scanf("%d",&t); int k; for(k=0;k<t;++k) { scanf("%d%d",&len1,&len2); array1=(int*)malloc(sizeof(int)*len1); array2=(int*)malloc(sizeof(int)*len2); int i,j; for(i=0;i<len1;++i) scanf("%d",&array1[i]); for(i=0;i<len2;++i) { scanf("%d",&array2[i]); } scanf("%d%d%d%d",&a,&b,&c,&d); int len3=(b-a+1)+(d-c+1); array3=(int*)malloc(sizeof(int)*len3); for(i=a-1,j=0;i<b;++i,++j) array3[j]=array1[i]; for(i=c-1;i<d;++i,++j) array3[j]=array2[i]; printf("%d\n",array3[(len3-1)/2]); } return 0; }