7-3 竞赛淘汰

有若干个小组参加某次计算机编程赛,每个小组的成员数在4-8之间,小组的个人平均分在所有小组中排后的小组将被淘汰,至少淘汰一组。

输入格式:

第一行输入小组数n及淘汰率r

第二行开始,每行为一个小组的总分和本组人数

输出格式:

输出将被淘汰的小组的组号、总分、人数、平均分(取两位小数),每行为一个小组的信息,各项数据间以一个空格间隔。

输入样例:

在这里给出一组输入。例如:

8 0.3
310 4
359 5
480 5
632 7
556 6
322 4
648 8
492 6

输出样例:

在这里给出相应的输出。例如:

2 359 5 71.80
1 310 4 77.50
6 322 4 80.50
#include<stdio.h>
#include<math.h>
struct my_struct
{
    int sum;
    int num;
    double ave;
    int count;
};
int cmpave(const void* p1,const void* p2)
{
    //return ((struct my_struct*)p1)->ave-((struct my_struct*)p2)->ave;
    double ret=((struct my_struct*)p1)->ave-((struct my_struct*)p2)->ave;
    if(ret>0)
    {
        return 1;
    }
    else
    {
        return -1;
    }
}
int main()
{
    int n;
    double r;
    scanf("%d %lf",&n,&r);
    getchar();
    struct my_struct arr[n];
    for(int i=0;i<n;i++)
    {
        arr[i].count=i+1;
        
        scanf("%d %d",&arr[i].sum,&arr[i].num);
        arr[i].ave=arr[i].sum*1.0/arr[i].num;
        //printf("%d %d %.2lf %d\n",arr[i].sum,arr[i].num,arr[i].ave,arr[i].count);
        
    }
    qsort(arr,n,sizeof(arr[0]),cmpave);
    
    int ret=ceil(n*1.0*r);
    //printf("%d",ret);
    for(int i=0;i<n;i++)
    {
       
       // printf("%d %d %.2lf %d\n",arr[i].sum,arr[i].num,arr[i].ave,arr[i].count);
        
    }
    for(int i=0;i<ret;i++)
    {
        printf("%d %d %d %.2lf\n",arr[i].count,arr[i].sum,arr[i].num,arr[i].ave);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值