题目描述
你的任务是帮助淘宝网店店长整理销售数据,根据累计的销售记录,将所有商品按销售数量降序排列。
输入格式
输入包括多行数据(行数小于100000),每行数据包括4个信息,分别是商品名称、销售数量、单价、成交日期
商品名称由小写字母组成,且不超过100个字符,销售数量和单价都是正整数,且小于10000
输出格式
输出包括多行数据,将所有在输入中出现的商品按销售数量降序排列,每行数据包括3个信息,分别是商品名称、销售数量、销售额,如果两种商品销售数量一样,则按商品的字母顺序升序排列
输入样例 复制
apple 1 20 2014-4-2
basketball 1 20 2014-4-2
computer 1 20 2014-4-2
shoe 1 20 2014-4-2
tv 1 20 2014-4-2
apple 1 18 2014-4-3
输出样例 复制
apple 2 38
basketball 1 20
computer 1 20
shoe 1 20
tv 1 20
数据范围与提示
分类标签
#include <iostream>
#include <map>
#include <string>
using
namespace
std;
struct
SaleInfo{
int
number;
int
saleVolume;
};
int
main()
{
map<string,SaleInfo>mp;
string goodName,datetime;
int
number,price;
while
(cin>>goodName>>number>>price>>datetime){
if
(mp.find(goodName)==mp.end()){
SaleInfo si;
si.number=si.saleVolume=0;
mp[goodName]=si;
}
mp[goodName].number+=number;
mp[goodName].saleVolume+=(number*price);
}
while
(mp.size()>0){
map<string,SaleInfo>::iterator itMax=mp.begin();
for
(map<string,SaleInfo>::iterator it=mp.begin();it!=mp.end();it++){
if
(it->second.number>itMax->second.number){
itMax=it;
}
}
cout<<itMax->first<<
" "
<<itMax->second.number<<
" "
<<itMax->second.saleVolume<<endl;
mp.erase(itMax);
}
return
0;
}