1037.Magic Coupon
来源:互联网 发布:测试网络端口命令 编辑:程序博客网 时间:2024/05/29 17:51
【题意】
给出一些优惠券面值和一些商品价格,可以将某一优惠券的面值乘以某一商品价格,若结果为正则能拿回那么多钱,否则支付那么多钱。题目要求能拿回来的钱尽量多
【思路】
对于优惠券和价格分别分正数和负数排序,两者都按照绝对值的递减顺序排,然后对于两个正数数列、两个负数数列分别从前往后对应相乘并累加结果即可
#include <iostream>#include <vector>#include <algorithm>using namespace std;bool cmpP(long long n1, long long n2){return n1>n2;}bool cmpN(long long n1, long long n2){return n1<n2;}int main(int argc, char const *argv[]){vector<long long> ncP,ncN,npP,npN;int ncCnt, npCnt;cin >> ncCnt;for(int i=0; i<ncCnt; i++){long long num;cin >> num;if(num>0){ncP.push_back(num);}else if(num<0){ncN.push_back(num);}}cin >> npCnt;for(int i=0; i<npCnt; i++){long long num;cin >> num;if(num>0){npP.push_back(num);}else if(num<0){npN.push_back(num);}}sort(ncP.begin(), ncP.end(), cmpP);sort(ncN.begin(), ncN.end(), cmpN);sort(npP.begin(), npP.end(), cmpP);sort(npN.begin(), npN.end(), cmpN);long long sum = 0;vector<long long>::iterator ncIt,npIt;for(ncIt=ncP.begin(),npIt=npP.begin(); ncIt!=ncP.end() && npIt!=npP.end(); ncIt++,npIt++){sum += (*ncIt)*(*npIt);}for(ncIt=ncN.begin(),npIt=npN.begin(); ncIt!=ncN.end() && npIt!=npN.end(); ncIt++,npIt++){sum += (*ncIt)*(*npIt);}cout << sum;system("pause");return 0;}
0 0
- 1037. Magic Coupon (25)
- 1037. Magic Coupon
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- PAT 1037. Magic Coupon
- 1037. Magic Coupon
- 1037. Magic Coupon
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037.Magic Coupon
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 日积(Running)月累(ZSSURE) :IPC=Inter-Process Communication,进程间通信学习笔记(一)
- 变量和数据类型
- 编程珠玑之第三章习题2
- Dumpbin命令查看软件32位/64位
- hadoop命令介绍
- 1037.Magic Coupon
- thunderbird 将收发邮件放在一个thread中
- javaweb的目录结构
- 【屌丝程序的口才逆袭演讲稿50篇】第五篇:不要给自己找任何借口【张振华.Jack】
- 扩展easyui dialog的两个方法.动态添加和删除buttons的按钮
- iOS 访问Default.png图片
- 爪字坠遵诅卒桩淄仔桩琢做桩紫族淄滓紫
- IOS多线程开发-NSThread原理及演示
- Linux学习笔记之目录