京东笔试-交易清单(京东2016实习生真题)
2017-08-29 22:28
176 查看
题目描述
金融证券行业超好的薪酬待遇,吸引了大批的求职者前往应聘,小东也不例外,准备应聘一家证券公司。面试官为考察她的数据分析、处理和编码能力,为她准备了以下问题。
股票交易中,委托是指股票交易者在证券公司买卖股票。每手委托包括一个委托单号i、价格pi、买入或卖出标记di及交易数量qi。
交易处理中,需要把同类业务(买入或卖出)中相同价格的所有委托合并起来,形成一个清单。清单的第一部分为按价格降序排列的合并后的卖出委托,紧随其后的是按相同顺序排列的买入合并委托。证券公司比较关心的是比较抢手的s条合并委托信息,需要得到买入及卖出最抢手的s条合并委托。对于买入委托,抢手的是指报价高的委托,而卖出委托中报价低的较为抢手。若买或卖的合并委托数小于s条,则全部列入清单中。
现在小东拿到的是n个委托,请你帮忙找出最抢手的s个合并委托。
输入
输入有若干组,每组的第一行为两个正整数n和s(1<=n<=1000,1<=s<=50),分别表示委托数和最抢手的清单数,接下来的n行为具体的委托信息,每行包含3部分,第一部分为一个字母‘B’或‘S’,表示买入或卖出,后两部分为两个整数p和q,表示报价和数量。任何卖出委托的报价都比买入委托的报价高。
输出
输出不超过2s行合并委托清单,格式与输入相同。
样例输入
6 2
B 10 3
S 50 2
S 40 1
S 50 6
B 20 4
B 25 10
样例输出
S 50 8
S 40 1
B 25 10
B 20 4
代码
金融证券行业超好的薪酬待遇,吸引了大批的求职者前往应聘,小东也不例外,准备应聘一家证券公司。面试官为考察她的数据分析、处理和编码能力,为她准备了以下问题。
股票交易中,委托是指股票交易者在证券公司买卖股票。每手委托包括一个委托单号i、价格pi、买入或卖出标记di及交易数量qi。
交易处理中,需要把同类业务(买入或卖出)中相同价格的所有委托合并起来,形成一个清单。清单的第一部分为按价格降序排列的合并后的卖出委托,紧随其后的是按相同顺序排列的买入合并委托。证券公司比较关心的是比较抢手的s条合并委托信息,需要得到买入及卖出最抢手的s条合并委托。对于买入委托,抢手的是指报价高的委托,而卖出委托中报价低的较为抢手。若买或卖的合并委托数小于s条,则全部列入清单中。
现在小东拿到的是n个委托,请你帮忙找出最抢手的s个合并委托。
输入
输入有若干组,每组的第一行为两个正整数n和s(1<=n<=1000,1<=s<=50),分别表示委托数和最抢手的清单数,接下来的n行为具体的委托信息,每行包含3部分,第一部分为一个字母‘B’或‘S’,表示买入或卖出,后两部分为两个整数p和q,表示报价和数量。任何卖出委托的报价都比买入委托的报价高。
输出
输出不超过2s行合并委托清单,格式与输入相同。
样例输入
6 2
B 10 3
S 50 2
S 40 1
S 50 6
B 20 4
B 25 10
样例输出
S 50 8
S 40 1
B 25 10
B 20 4
代码
#include<iostream> #include<map> using namespace std; int main() { int n, s; while (cin >> n >> s){ map<int, int> Buy, Sell; int i, pice, num; char tmp; for (i = 0; i < n; i++){ //统计 cin >> tmp >> pice >> num; if (tmp == 'S'){ if (Sell.find(pice) == Sell.end()) Sell[pice] = num; else Sell[pice] += num; } else{ if (Buy.find(pice) == Buy.end()) Buy[pice] = num; else Buy[pice] += num; } } int bCount = Buy.size()<s ? Buy.size() : s; int sCount = Sell.size()<s ? Sell.size() : s; map<int, int>::reverse_iterator l1 = Sell.rbegin(); for (i = 0; i<Sell.size() - sCount; i++) l1++; for (; l1 != Sell.rend(); l1++) cout << 'S'<<" "<< l1->first <<" "<< l1->second << endl; map<int, int>::reverse_iterator l2 = Buy.rbegin(); for (; bCount>0; bCount--, l2++) cout << 'B' << " " << l2->first << " "<< l2->second << endl; } return 0; }
相关文章推荐
- 交易清单(京东2016实习生真题)
- 交易清单(京东2016实习生真题)
- 京东2016实习生招聘笔试真题-技术岗位选择题A
- 京东2016校园实习生招聘系统测试岗在线笔试编程题
- 京东笔试-交易清单
- 三子棋(京东2016实习生真题)
- 2016京东算法工程师实习生笔试编程题:上台阶
- 选举游戏(京东2016实习生真题)
- 2016京东算法工程师实习生笔试编程题:小球的距离
- 京东2016实习生笔试题之走坐标
- 选举游戏(京东2016实习生真题)
- 京东2016笔实习生在线笔试题
- 路径规划(京东2016实习生真题)
- 京东2016实习生在线笔试
- 生日礼物(京东2016实习生真题)
- 买糖果(京东2016实习生真题)
- 备考(京东2016实习生真题)
- 京东2016实习生招聘笔试详解
- 动态规划 - 腾讯2016实习生笔试
- 数值游戏(360 2016实习生招聘笔试题)