有若干个小组参加某次计算机编程赛,每个小组的成员数在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);
}
}