题目链接:https://ac.2333.moe/Problem/view.xhtml?id=1029
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<cstring>
using namespace std;
int n,ans;
long long k;
struct Node
{
char name[20];
long long want,shiji;
int food;
} a[100000];
bool cmp(struct Node q,struct Node p)
{
char *s1=q.name;
char *s2=p.name;
if(q.food==p.food)
return strcmp(s1,s2)<0;
return q.food>p.food;
}
bool cmp1(struct Node q,struct Node p)
{
char *s1=q.name;
char *s2=p.name;
if(q.shiji==p.shiji)
return strcmp(s1,s2)<0;
return q.shiji>p.shiji;
}
int main()
{
while(~scanf("%d%lld",&n,&k))
{
for(int i=0; i<n; i++)
{
scanf("%s%lld%d",a[i].name,&a[i].want,&a[i].food);
a[i].shiji=0;
}
sort(a,a+n,cmp);
for(int i=0; i<n; i++)
{
if(k<a[i].want)
{
a[i].shiji=k;
break;
}
a[i].shiji=a[i].want;
k-=a[i].want;
}
ans=0;
for(int i=0; i<n; i++)
{
ans+=a[i].shiji*a[i].food;
a[i].shiji=a[i].shiji*a[i].food;
}
sort(a,a+n,cmp1);
printf("%d\n",ans);
printf("%s %d\n",a[0].name,a[0].shiji);
}
return 0;
}