懒虫小鑫
2016-04-02 22:48
393 查看
懒虫小鑫
Time Limit: 1000MS Memory limit: 65536K
题目描述
小鑫是个大懒虫,但是这一天妈妈要小鑫去山上搬些矿石去城里卖以补贴家用。小鑫十分的不开心。不开心归不开心,小鑫还是要做这件事情的。我们把这个事情简化一下。有n块矿石,设第i块矿石由两个数字wi和pi表示。分别表示这块石头的重量和可以卖的价钱。小鑫每次只能搬一块矿石去城里卖,所以他决定每次都会搬重量最小的那块。如果恰好有几块重量相等,那就在这几块中挑选价值最高的带走。
由于路程原因。小鑫每天只能打m个来回,也就意味着他只能卖掉m块矿石。你能计算出他能得到多少钱么?
输入
输入数据有多组,到文件结束。对于每一组数据,第一行为n,m。m≤n≤10000。
接下来有n行,每行两个数代表石头的w与p。
输出
对于每组数据,输出有一行为一个数,为答案。
示例输入
4 2 1 2 1 3 2 2 3 4
示例输出
5
#include <iostream> #include <cstdio> using namespace std; struct node { int pi, wi; }pp[10010], temp; void Qsort(node a[], int low, int high); int main() { int n, m; while(cin >> n >> m) { for(int i = 0; i < n; i++) { cin >> pp[i].wi >> pp[i].pi; } Qsort(pp, 0, n-1); int num = 0, k = 0; while(m--) { num += pp[k++].pi; } cout << num << endl; } return 0; } void Qsort(node a[], int low, int high) { int i = low, j = high; node key = a[low]; if(low >= high) return; while(i < j) { while(i < j && (pp[j].wi > key.wi || (pp[j].wi == key.wi && pp[j].pi < key.pi))) j--; a[i] = a[j]; while(i < j && (pp[i].wi < key.wi || (pp[i].wi == key.wi && pp[i].pi > key.pi))) i++; a[j] = a[i]; } a[i] = key; Qsort(a, low, i-1); Qsort(a, i+1, high); }
相关文章推荐
- Maven+SpringMVC+Mybatis 开发环境整合
- [BZOJ1954]Pku3764 The xor-longest Path
- HDU 2196 Computer(树的直径)
- 文件操作->Tesla.Angela教程整理
- centos之jdk安装
- 完美主义容易导致效率低下
- nginx运行时报错:error while loading shared libraries: libpcre.so.3
- 我的2016年Linux学习决心书(老男孩教育在线课程班第一期)
- (十四) Nepxion-Thunder分布式RPC集成框架 - 调用链
- 强连通分量分解
- 算法导论—Trie树
- Android WebView常见问题及解决方案汇总
- 字符串反转的进一步应用----单词反转
- day24 订单删除 & 打印销量排行榜 & 在线支付
- 通过udl文件得到连接字符串
- 重载方法调用精确匹配问题
- OSChina 周日乱弹 ——我18岁了都没睡过男人
- 活动选择
- C++实践参考:IP地址类
- 编码又闹出了小问题