80求助
查看原帖
80求助
1335039
erjn楼主2024/9/7 16:15
#include <bits/stdc++.h>
using namespace std;
#define int long long
int c[10000005];
int till = 0;
string s[100005];
struct node {
	int a=0, b=0, c=0;
};

bool cmp(int a, int b) {
	return a > b;
}

map<string, node>mp;
signed main() {
	int n, m;
	cin >> n >> m;
	for (int i = 0; i < m; i++) {
		int a, b, c;
		cin >> a >> b >> c >> s[i];
		mp[s[i]].a += a;
		mp[s[i]].b = b;
		mp[s[i]].c = c;
	}
	for (int i = 0; i < m; i++) {
		till++;
		for (; mp[s[i]].a>0;) {
			c[till] = min(mp[s[i]].a, mp[s[i]].c) * mp[s[i]].b;
			mp[s[i]].a -= min(mp[s[i]].a, mp[s[i]].c);
		}
	}
	sort(c + 1, c + till + 1, cmp);
	int ans = 0;
	for (int i = 1; i <= 21 - n; i++) {
		ans += c[i];
	}
	cout << ans;
	return 0;
}
2024/9/7 16:15
加载中...