Saving HDU

来源:互联网 发布:操作系统进程调度算法 编辑:程序博客网 时间:2024/05/21 08:00

题目链接:

....................................

AC代码:

#include<bits/stdc++.h>using namespace std;struct aa{    int vi,m;}a[1000];bool cmp(aa x,aa y){    return x.vi>y.vi;}int main(){    int v,n,sum;    while(~scanf("%d",&v)&&v)//多组输入,并且v不为零,若v为零则break;    {        scanf("%d",&n);        sum=0;        for(int i=0;i<n;i++)            scanf("%d %d",&a[i].vi,&a[i].m);        sort(a,a+n,cmp);        for(int i=0;i<n;i++)        {            if(v-a[i].m>=0)            {                sum+=a[i].vi*a[i].m;                v=v-a[i].m;            }            else            {                sum+=v*a[i].vi;                break;            }        }        printf("%d\n",sum);    }}