答案(参考)
2026-09-06 17:35:15
发布于:广东
1阅读
0回复
0点赞
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
vector<pair<int, int>> v;
for(int i = 0; i < m; i++)
{
int a, b;
cin >> a >> b;
v.emplace_back(b, a);
}
// 按每盒火柴数b降序
sort(v.rbegin(), v.rend());
long long ans = 0;
int rem = n;
for(auto &p : v)
{
int b = p.first;
int a = p.second;
int take = min(a, rem);
ans += 1LL * take * b;
rem -= take;
if(rem == 0) break;
}
cout << ans << endl;
return 0;
}
这里空空如也




有帮助,赞一个