题意:中文题面,不需要解释了。
思路:按金钱大小,从小到大排序即可。
AC代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 5010;
struct Node{
    int x,y;
}node[maxn];
bool cmp(Node a,Node b){
    return a.x < b.x;
}
int main(void){
    int n,m;
    cin>>n>>m;
    for(int i = 1; i <= m; i++){
        cin>>node[i].x>>node[i].y;
    }
    sort(node+1,node+1+m,cmp);
    int sum = 0;
    for(int i = 1; i <= m; i++){
        if(n>=node[i].y){
            sum += node[i].x*node[i].y;
            n -= node[i].y;
        }
        else{
            sum += n*node[i].x;
            break;
        }
    }
    cout<<sum<<endl;
    return 0;
}