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

}

 

posted @ 2012-03-29 14:58  dupuleng  阅读(114)  评论(0)    收藏  举报