小鑫是个商人,当然商人最希望的就是多赚钱,小鑫也一样。
这天,他来到了一个遥远的国度。那里有着n件商品,对于第i件商品需要付出ci的价钱才能得到。当然,对于第i件商品,小鑫在自己心中有一个估价pi:代表着当他买下这件商品后带回他的国家可以卖出的价格。小鑫只能带回m件商品,你能帮他计算一下他最多能赚多少钱么?
输入格式:
第一行是n,m。( 0< m ≤ n ≤ 1000000 )
紧接着有n行,每一行有两个数 c ,p。第i行代表着ci,pi。( ci ≤ pi, 保证数据都在int范围内 )
输出格式:
输出一行一个数,代表小鑫能赚多少钱。
输入样例:
4 2
1 2
1 3
2 2
3 4
输出样例:
3
参考代码:
#include <stdio.h>
struct node
{
int ci, pi, b;
} q[1000010], t;
void sort(int l, int r)
{
if (l >= r)
return;
t = q[l];
int i = l, j = r;
while (i < j)
{
while (q[j].b <= t.b && i < j)
j--;
q[i] = q[j];
while (q[i].b >= t.b && i < j)
i++;
q[j] = q[i];
}
q[i] = t;
sort(l, i - 1);
sort(i + 1, r);
}
int main()
{
int n, m;
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++)
{
scanf("%d %d", &q[i].ci, &q[i].pi);
q[i].b = q[i].pi - q[i].ci;
}
sort(0, n - 1);
int ans = 0;
for (int i = 0; i < m; i++)
{
ans += q[i].b;
}
printf("%d\n", ans);
return 0;
}