#include<iostream>
#include<stdio.h>
#include<string>
#include<algorithm>
using namespace std;
const int maxn = 1e4+10;
int t;
int m,n;
struct node
{
char name[100];
int sex;//男女队
int num;//题数
int pen;//罚时
int the;//序号
} g[maxn],a[maxn];
int cmp1(node a,node b)
{
return a.the < b.the;
}
int cmp(node a,node b)
{
if(a.num == b.num)
return a.pen < b.pen;
if(a.num == b.num &&a.pen ==b.pen)
return a.the < b.the;
else return a.num >= b.num;
}
int k = 0;
int main()
{
cin>>t;
while(t--)
{
scanf("%d%d",&n,&m);
for(int i = 0; i<n; i++)
{
scanf("%s%d%d%d",&g[i].name,&g[i].sex,&g[i].num,&g[i].pen);
g[i].the = i;
}
if(n>m)
{
sort(g,g+n,cmp);
int flag=1;
for(int i = m-1; i>=0; i--)
{
a[i] = g[i];
if(g[i].sex != 0)
flag = 0;
}
sort(a,a+m,cmp1);
if(!flag)
{
printf("Case %d:\n",++k);
for(int i = 0; i <m; i++)
printf("%s\n",a[i].name);
cout<<endl;
}
else
{
for(int i = m; i < n; i++)
if(g[i].sex!=0)
{
a[m] = g[i];
break;
}
sort(a,a+m+1,cmp1);
printf("Case %d:\n",++k);
for(int i = 0; i <= m; i++)
printf("%s\n",a[i].name);
cout<<endl;
}
}
else
{
printf("Case %d:\n",++k);
for(int i = 0; i < n; i++)
printf("%s\n",g[i].name);
cout<<endl;
}
}
return 0;
}
山东省第二届ACM B题题解
最新推荐文章于 2024-04-29 17:03:19 发布