#include #include using namespace std; struct node{ int yj;//原价 int zj;//折扣价 }a[1005]; bool cmp(node a,node b)//按照折扣价从小到大排序 { return a.zj<b.zj; } int main() { int n,x,y; cin>>n>>x>>y; for(int i=1;i<=n;i++) { cin>>a[i].yj>>a[i].zj; } sort(a+1,a+n+1,cmp); int num=0;//统计买了几个商品 int money=0;//花费的钱数 for(int i=1;i<=n;i++) { if(a[i].yj<=a[i].zj)//如果原价比折扣价还小,就没有必要用折扣券了 { num++;//买一个商品 money+=a[i].yj;//花费原价 if(num==x)//如果用完了所有折扣券 { break;//退出循环 } } else//如果原价比折扣价大,可以用折扣券,省钱 { num++;//买一个商品 money+=a[i].zj;//花费折扣价 if(num==x)//如果用完了所有折扣券 { break;//退出循环 } } } if(num<y)//如果买的商品不到y个 { money-=(y-num);//把多余的折扣券用上,减少花费 } cout<<num<<' '<<money<<endl;//输出结果 return 0; }

C++ 实现最大化商品购买数量并最小化花费

原文地址: https://www.cveoy.top/t/topic/lHUk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录