

贪心 以脂肪值作为比较大小的依据,重载小于号,按照脂肪值从大到小排序,之后贪心选择。
#include<cstdio>
#include<iostream>
using namespace std;
int n,m,k;
int ans=0;
struct nn
{
int l,r;
bool operator < (nn &b)const
{ return l>b.l;
}
}d[10010];
int c[10010];
int main()
{
cin>>n>>m>>k;
for(int i=1;i<=k;i++)
{
cin>>c[i];
}
for(int i=1;i<=n;i++) {
cin>>d[i].l;
cin>>d[i].r;
}
sort(d+1,d+n+1);
for(int i=1;i<=n;i++)
{
if(m&&c[d[i].r])
{
ans+=d[i].l;
m--;
c[d[i].r]--;
}
}
cout<<ans<<endl;
return 0;
}