100 5
5 20
9 40
3 10
8 80
6 30
思路:
这道题和陶陶摘苹果没有什么区别,直接A掉了
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int n,m;
long long ans;
struct NUM
{
int p,a;
bool operator<(const NUM &num1){
if(p==num1.p) return a>num1.a;
else return p<num1.p;
}
}num[11111];
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++) cin>>num[i].p>>num[i].a;
sort(num+1,num+m+1);
//for(int i=1;i<=m;i++) cout<<i<<" "<<num[i].p<<" "<<num[i].a<<endl;
for(int i=1;i<=m;i++)
{
if(n>=num[i].a)
{
ans+=num[i].p*num[i].a;
n-=num[i].a;
//cout<<"ans="<<ans<<" "<<"n="<<n<<endl;
}
else
{
ans+=num[i].p*n;
n=0;
//cout<<"1ans="<<ans<<" "<<"n="<<n<<endl;
}
if(n==0) break;
}
cout<<ans<<endl;
return 0;
}