偷懒排序写法60分
查看原帖
偷懒排序写法60分
464094
NEO_bone楼主2022/3/29 19:38

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
struct thing{
    int a,b,c;
    string s;
}t[103];
int n,m,flag,ans;
int cmd(thing a,thing b)
{
    return a.a*a.b>b.a*b.b;
}
int main()
{
    cin>>m>>n;
    for(int i=1;i<=n;i++)
    {
        int op=0;
        int a1,b1,c1;
        string s1;
        cin>>a1>>b1>>c1>>s1;
        for(int l=1;l<=flag;l++)
        {
            int need=t[l].c-t[l].a;
            if(t[l].s==s1)
            t[l].a+=min(need,a1);
            if(need<=a1)
            {
                flag++;
                t[flag].s=s1;
                t[flag].a=a1-need;
                t[flag].b=b1;
                t[flag].c=c1;
            }
			op=1;
        }
        if(op==0)
        {
            flag++;
            t[flag].s=s1;
            t[flag].a=a1;
            t[flag].b=b1;
            t[flag].c=c1;
        }
    }
    sort(t+1,t+1+flag,cmd);
    for(int i=1;i<=21-m;i++)
    ans+=t[i].a*t[i].b;
    cout<<ans<<endl;
    return 0;
}
2022/3/29 19:38
加载中...