描述 Description
小Q很喜欢玩最近才推出的经营餐厅游戏,他昼夜守在电脑前,于是他的餐厅赚了好多好多钱。赚了钱就要花的嘛,小Q决定在这款游戏里的商店购买商品。 这个商店里有N个商品,商品的库存都足够多,第i个商品的初始价格是Cost[i],每多买一个,商品的价格会上升Up[i]元。(这个世界都是物以稀为贵的啦) 小Q想买M件商品,他想知道买M件商品最少要多少钱。
输入格式 Input Format
第一行2个数N,M。分别表示有N个商品,小Q想买M件商品。接下来N行,每行两个数Cost[i],Up[i]。
输出格式 Output Format
只有一行,为买M件物品最少要花的费用。
#include<iostream>
using namespace std;
int n,m,ans=0;
int cost[1500],up[1500];
void hsort(int l,int r)
{
int i=l,j;
while (i<=(r>>1))
{
j=i*2;
if (j<r&&cost[j]>cost[j+1]) j++;
if (cost[i]>cost[j]) {swap(cost[i],cost[j]);swap(up[i],up[j]);i=j;}else break;
}
}
int main()
{
cin>>n>>m;
for (int i=1;i<=n;i++) cin>>cost[i]>>up[i];
for (int i=n>>1;i>0;i--) hsort(i,n);
// for (int i=n;i>1;i--) {swap(cost[1],cost[i]);swap(up[1],up[i]);hsort(1,i-1);}
for (int i=1;i<=m;i++)
{
ans+=cost[1];
cost[1]+=up[1];
hsort(1,n);
}
cout<<ans<<endl;
return 0;
}
浙公网安备 33010602011771号