30分求助(关注做奖励)
查看原帖
30分求助(关注做奖励)
537218
2012zxt楼主2022/7/2 18:23

#include<bits/stdc++.h>
using namespace std;
struct knight
{
    int sl,cj;//效率和酬金 
}a[20005];
bool cmp(knight x,knight y)
{
    if(x.cj==y.cj)
        return x.sl>y.sl;
    return x.cj<y.cj;
}
int n,m,sum,num,l[20005],cnt;//龙头的个数,骑士的数量,需要的钱的数量,总共可以杀的头的数量(特判需要) 
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>l[i];
        cnt+=l[i];
    }
    for(int i=1;i<=m;i++)
    {
        cin>>a[i].sl;
        a[i].cj=a[i].sl;
        num+=a[i].sl;
    }
    if(num<cnt)
    {
        cout<<"you died!";
        return 0;
    }
    sort(a+1,a+1+m,cmp);
    num=0;//清零
    for(int i=1;i<=m;i++)
    {
        if(num>=cnt)//太好了,龙嗝屁了
        {
            cout<<sum;
            return 0;
        }
        num+=a[i].sl;
        sum+=a[i].cj;
    } 
    return 0;
}
2022/7/2 18:23
加载中...