寻找奶牛

本文介绍了一种算法,用于从一组奶牛中找出产奶量处于中位数的奶牛及其编号。该算法首先读取测试组数和每组中的奶牛数量及产奶量,然后对数据进行排序并确定中位数产奶量的奶牛。

Font Size: Aa Aa Aa

Description

    奶牛场有许多奶牛,农夫Alice,每天都会为奶牛挤奶,但是这些奶牛的产奶量是不相同,每头奶牛都有唯一的编号,现在农夫Alice想找到它们之中产奶量为中位数的奶牛的编号,如果产奶量一样,输出编号较小的奶牛的编号 .

Input

第一行T表示测试组数
第二行m表示奶牛头数,这里保证m是奇数,m<=1500
接下来m行每行两个整数id, milk 表示奶牛的id和产奶量(保证每个id不相同,且产奶量<=10000)

Output

输出产奶量为所有奶牛中中间值的奶牛的编号.如果产奶量一样,输出编号较小的奶牛的编号,每组测试数据间输出一个空行.

Sample Input

3

3
1 2
2 2
3 2

3 
1 2
2 3
3 4

5
1 1
2 1
3 1
4 2
5 2

Sample Output

1

2

1

Hint

这里的中位数,是指所有奶牛中,产量恰好在排在中间的奶牛的产量。
 
 
参考代码如下:
#include <iostream> 
#include <stdio.h> 
#include <algorithm> 
using namespace std; 
  
struct node 
{ 
    int id,cl; 
}cow[2005]; 
int cmp(node a,node b) 
{ 
    if(a.cl==b.cl) 
        return a.id<b.id; 
    else
        return a.cl>b.cl; 
} 
int main() 
{ 
    int t,n,i,sum,m; 
    scanf("%d",&t); 
    while(t--) 
    { 
        scanf("%d",&n); 
        for(i=0;i<n;i++) 
            scanf("%d %d",&cow[i].id,&cow[i].cl); 
        sort(cow,cow+n,cmp); 
        m=cow[n/2].cl; 
        sum=cow[n/2].id; 
        for(i=0;i<n/2;i++) 
        { 
            if(cow[i].cl==m) 
            { 
                sum=cow[i].id; 
                break; 
            } 
        } 
        printf("%d\n",sum); 
        printf("\n"); 
    } 
    return 0; 
}

更多做题心得的详情请查看(记得关注哦)https://mp.weixin.qq.com/s?__biz=MzIyOTM4MDMxNw==&mid=2247483798&idx=1&sn=d4fbd34e50ce4efda39d7710d2dc5dc9&chksm=e842d824df3551320d7f1ed85286b2616aec419f7a852cc5c9c9f270beb237b5e6ca83166162&token=1630951018&lang=zh_CN#rd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值