九度 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;
}

浙公网安备 33010602011771号