题目很长,题意很简单:计算出H,对preference排序,取前m个输出即可。注意数据类型,被卡了一下。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string str1,str2;
struct node
{
string str;
long long ord;
}poem[200];
bool cmp(node a,node b){
if(a.ord>b.ord)
{
return true;
}
else if(a.ord==b.ord){
return a.str<b.str;
}
return false;
}
int main()
{
int t,n,m;
cin>>t;
while (t--) {
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>poem[i].str>>poem[i].ord;
}
sort(poem,poem+n,cmp);
long long H=0;
for(int i=0;i<m;i++)
{
H+=(m-i)*poem[i].ord;
}
cout<<H;
for(int i=0;i<m;i++)
{
cout<<" ";
cout<<poem[i].str;
}
cout<<endl;
}
return 0;
}