主油管道为东西向,确定主油管道的南北位置,使南北向油井喷油管道和最小。要求线性时间完成。
1<= 油井数量 <=2 000 000
输入要求:
输入有油井数量行,第 K 行为第 K 油井的坐标 X ,Y 。其中, 0<=X<2^31,0<=Y<2^31 。
输出要求:
输出有一行, N 为主管道最优位置的最小值
注意:用快排做的不给分!!
测试输入
41,969978 26500,413356 11478,550396 24464,567225 23281,613747 491,766290 4827,77476 14604,597006 292,706822 18716,289610 5447,914746
测试输出
597006
源代码
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define MAXSIZE 2000000
unsigned int a[MAXSIZE];
int cmp(const void* a,const void* b)
{
return(*(unsigned long int *)a-*(unsigned long int *)b);
}
int main(){
unsigned int x,y;
int i=0,k;
while(scanf("%u,%u",&x,&y)!=EOF){
a[i++]=y;
}
qsort(a,i,sizeof(a[0]),cmp);
if(i%2!=0){
k=i/2;
printf("%u\n",a[k]);
}
else{
k=i/2-1;
printf("%u\n",a[k]);
}
return 0;
}