懶蟲小鑫

懶蟲小鑫

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

小鑫是個大懶蟲,但是這一天媽媽要小鑫去山上搬些礦石去城裏賣以補貼家用。小鑫十分的不開心。不開心歸不開心,小鑫還是要做這件事情的。
我們把這個事情簡化一下。有n塊礦石,設第i塊礦石由兩個數字wi和pi表示。分別表示這塊石頭的重量和可以賣的價錢。小鑫每次只能搬一塊礦石去城裏賣,所以他決定每次都會搬重量最小的那塊。如果恰好有幾塊重量相等,那就在這幾塊中挑選價值最高的帶走。
由於路程原因。小鑫每天只能打m個來回,也就意味着他只能賣掉m塊礦石。你能計算出他能得到多少錢麼?

Input

輸入數據有多組,到文件結束。
對於每一組數據,第一行爲n,m。m≤n≤10000。
接下來有n行,每行兩個數代表石頭的w與p。

Output

對於每組數據,輸出有一行爲一個數,爲答案。

Sample Input

4 2
1 2
1 3
2 2
3 4

Sample Output

5

Hint

 

Source


#include <stdio.h>
#include <stdlib.h>

struct node
{
    int w;
    int p;

} z[10010], t;
int main()
{
    int n, m, i, j, sum, k;
    while(~scanf("%d%d",&n, &m))
    {
        sum = 0;
        for(i = 0; i < n; i++)
        {
            scanf("%d%d",&z[i].w,&z[i].p);
        }
        for(i = 0; i < n - 1; i++)
        {
            k = i;
            for(j = i + 1; j < n; j++)
            {
                if(z[j].w < z[k].w)
                {
                    k = j;
                }
                else if(z[j].w == z[k].w)
                {
                    if(z[j].p > z[k].p)
                    {
                        k = j;
                    }
                }
            }
            if(k != i)
            {
                t = z[k];
                z[k] = z[i];
                z[i] = t;
            }
        }
        for(i = 0; i < m; i++)
        {
            sum += z[i].p;
        }

        printf("%d\n",sum);
    }
    return 0;
}
發佈了58 篇原創文章 · 獲贊 1 · 訪問量 7845
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章