首页 > 学院 > 开发设计 > 正文

懒虫小鑫

2019-11-10 20:13:35
字体:
来源:转载
供稿:网友

PRoblem Description

小鑫是个大懒虫,但是这一天妈妈要小鑫去山上搬些矿石去城里卖以补贴家用。小鑫十分的不开心。不开心归不开心,小鑫还是要做这件事情的。我们把这个事情简化一下。有n块矿石,设第i块矿石由两个数字wi和pi表示。分别表示这块石头的重量和可以卖的价钱。小鑫每次只能搬一块矿石去城里卖,所以他决定每次都会搬重量最小的那块。如果恰好有几块重量相等,那就在这几块中挑选价值最高的带走。由于路程原因。小鑫每天只能打m个来回,也就意味着他只能卖掉m块矿石。你能计算出他能得到多少钱么?

Input

输入数据有多组,到文件结束。对于每一组数据,第一行为n,m。m≤n≤10000。接下来有n行,每行两个数代表石头的w与p。

Output

对于每组数据,输出有一行为一个数,为答案。

Example Input

4 21 21 32 23 4

Example Output

5    #include <stdio.h>    struct node    {        int w;        int p;    }size[10001],t;    void sort(struct node size[],int n)    {        int i,j,flag;        for(i=0;i<n-1;i++)        {            flag=i;            for(j=i+1;j<n;j++)            {                if(size[j].w<size[flag].w)                {                    flag=j;                }                else if(size[j].w==size[flag].w)                {                    if(size[j].p>size[flag].p)                    {                        flag=j;                    }                }            }            if(flag!=i)            {                t=size[i];                size[i]=size[flag];                size[flag]=t;            }        }    }    int main()    {        int n,m,sum;        while(~scanf("%d %d",&n,&m))        {            sum=0;            int i;            for(i=0;i<n;i++)            {                scanf("%d %d",&size[i].w,&size[i].p);            }            sort(size,n);            for(i=0;i<m;i++)            {                sum+=size[i].p;            }            printf("%d/n", sum);        }        return 0;    }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表