一个结构体排序题

一个结构体排序题

在ACM赛制中,排名的依据标准有两个,一是队伍的解题数,二是队伍解题耗费的时间。解题数为排名的主要依据,解出更多题目的队伍排名更高;而对于解题数相同的队伍,根据他们解题耗时进行排名,耗时短的队伍排名更高。

现给出某次ACM比赛的队伍最终成绩,即解题数和解题耗时,其中存在并列的队伍,也就是说解题数和解题耗时完全相同(这种情况正规比赛不会出现,本题是假设)。要求回答出排某一名次的队伍共存在多少并列。输入  输入第一行包含两个整数n和k(1 ≤ k ≤ n ≤ 50),其中n表示队伍数,k表示需要查询并列的名次。

接下来是n行,表示n个队伍的成绩,每行包含两个整数p和t (1 ≤ p, t ≤ 50),p表示队伍解题数,t表示队伍解题耗时。输出  输出一个整数,即排第k名的队伍存在的并列队伍总数。

第一次接触这样的题,确实是学到了!
这个程序的重点就是排序和计数了
排序用sore并且用if判断
如果做题数相等,按时间从小到大排序,否则按做题数从大到小排序,

第二个点就是计数、
首先写一个大for循环
sum用来累计
h用来比较
这段是这程序最精髓的一段,但我描述不好就直接放源码了
for(int i = 0;i < n;i ++)
  {
   sum ++;
   h++;
   if(a[i].f!=a[i+1].f||a[i].t!=a[i+1].t||i==n-1)
   {
    if(h >= k)
    {
     cout<<sum<<endl;
     break;
    }
    sum=0;
   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值