永康物流网站,win安装wordpress,网站建设的步骤,推广app软件roblem Description 小鑫是个大懒虫#xff0c;但是这一天妈妈要小鑫去山上搬些矿石去城里卖以补贴家用。小鑫十分的不开心。不开心归不开心#xff0c;小鑫还是要做这件事情的。我们把这个事情简化一下。有n块矿石#xff0c;设第i块矿石由两个数字wi和pi表示。分别表示这块… roblem Description 小鑫是个大懒虫但是这一天妈妈要小鑫去山上搬些矿石去城里卖以补贴家用。小鑫十分的不开心。不开心归不开心小鑫还是要做这件事情的。 我们把这个事情简化一下。有n块矿石设第i块矿石由两个数字wi和pi表示。分别表示这块石头的重量和可以卖的价钱。小鑫每次只能搬一块矿石去城里卖所以他决定每次都会搬重量最小的那块。如果恰好有几块重量相等那就在这几块中挑选价值最高的带走。 由于路程原因。小鑫每天只能打m个来回也就意味着他只能卖掉m块矿石。你能计算出他能得到多少钱么 Input 输入数据有多组到文件结束。 对于每一组数据第一行为nm。m≤n≤10000。 接下来有n行每行两个数代表石头的w与p。 Output 对于每组数据输出有一行为一个数为答案。Example Input 4 2
1 2
1 3
2 2
3 4 Example Output 5 #include stdio.h #include stdlib.h struct node { int w,p,h; }a[10001],t; void q(struct node a[],int l,int r)//快速排序 { struct node keya[l]; int il,jr; if(lr) return; if(lr) { while(ij) { while(ija[j].wkey.w) j--; while(ija[j].wkey.w)//质量相等则选价格高的 { if(a[j].pkey.p) break; else j--; } a[i]a[j]; while(ija[i].wkey.w) i; while(ija[i].wkey.w) { if(a[i].pkey.p) break;//质量相等则选价格高的 else i; } a[j]a[i]; } a[i]key; q(a,l,i-1); q(a,i1,r); } } int main() { int i,m,n,c; while(~scanf(%d%d,n,m)) { c0; for(i0;in;i) scanf(%d%d,a[i].w,a[i].p); q(a,0,n-1); for(i0;im;i) ca[i].p; printf(%d\n,c); } return 0; }