第四题:T4交易记录
标签:
m
a
p
map
map
题意:给定
n
n
n条股票买入卖出操作,有对应的交易单价
a
i
a_i
ai和交易数量
b
i
b_i
bi,分别将多笔买入卖出交易价格相同的进行交易数量合并。买入记录按照交易价格从低到高排序,卖出记录按照交易价格从高到低排序。
题解:按照题意进行模拟,分买入和卖出两种情况,可以通过两个结构体分别进行存储,存储之后分别按照题目中给定的要求进行排序,输出的时候统计一下相同的情况,对应做合并处理,注意一些细节的处理。
上面的这种解法比较好想,但是实现起来比较繁琐,我们通过使用
m
a
p
map
map去简化一下,维护一个按照
k
e
y
key
key从小到大排序的
b
u
y
buy
buy,维护一个按照
k
e
y
key
key从大到小的
s
e
l
l
sell
sell,正常存储,然后对应输出即可。
具体 可以看下面代码,同学们可以多往一些
s
t
l
stl
stl的使用去思考,多用用,代码会写的更简洁。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
map< ll, ll, less<ll> > buy;
map< ll, ll, greater<ll> > sell;
int main() {
string op;
ll n, a, b;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> op >> a >> b;
if (op == "BUY") buy[a] += b;
else sell[a] += b;
}
cout << buy.size() + sell.size() << endl;
for (auto k: buy) {
cout << "BUY" << " " << k.first << " " << k.second << endl;
}
for (auto k: sell) {
cout << "SELL" << " " << k.first << " " << k.second << endl;
}
return 0;
}