特别坑的一道题
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxm=305;
int n,m;
int queue[maxm];
char s[maxm];
struct node
{
char name[maxm];
char sex[maxm];
double r1,r2;
double z;
} t[maxm];
double cmp(node p,node q)
{
return p.z>q.z;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
double MAXr1=-1,MAXr2=-1;
double socre=-1;
int w=-1,cnt=0;
for(int i=0; i<n; i++)
{
scanf("%s%s%lf%lf",t[i].name,t[i].sex,&t[i].r1,&t[i].r2);
MAXr1=max(MAXr1,t[i].r1);
MAXr2=max(MAXr2,t[i].r2);
}
double y1=(300.0/MAXr1);
double y2=(300.0/MAXr2);
for(int i=0; i<n; i++)
{
t[i].z=t[i].r1*y1*0.3+t[i].r2*y2*0.7;
}
sort(t,t+n,cmp);
for(int i=0; i<n; i++)
{
if(strcmp(t[i].sex,"female")==0)
{
w=i;
queue[cnt++]=i;
break;
}
}
for(int i=0;i<n;i++)
{
if(i!=w)
{
if(cnt==m)
{
break;
}
queue[cnt++]=i;
}
}
printf("The member list of Shandong team is as follows:\n");
for(int i=0; i<m; i++)
{
for(int j=i; j<m; j++)
{
if(t[queue[j]].z>t[queue[i]].z)
{
double temp=t[queue[i]].z;
t[queue[i]].z=t[queue[j]].z;
t[queue[j]].z=temp;
strcpy(s,t[queue[i]].name);
strcpy(t[queue[i]].name,t[queue[j]].name);
strcpy(t[queue[j]].name,s);
}
}
}
for(int i=0; i<cnt; i++)
{
printf("%s\n",t[queue[i]].name);
}
}
return 0;
}