你的任务是帮助淘宝网店店长整理销售数据,根据累计的销售记录,将所有商品
按销售数量降序排列。
输入
输入包括多行数据(行数小于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<string>
#include<algorithm>
#include<stdlib.h>
#define MAX 100000
using namespace std;
struct good
{
string name;
int num;
int value;
};
good a[100000];
int counttt=0;
int CCC(good a,good b)
{
if(a.num!=b.num)
{
return a.num>b.num;
}
else return a.name<b.name;
}
int CCC2(good a,good b)
{
return a.name<b.name;
}
int main()
{
string name,date;
int num,price;
while(cin>>name>>num>>price>>date)
{
a[counttt].name=name;
a[counttt].num=num;
a[counttt].value=num*price;
counttt++;
}
sort(a,a+counttt,CCC2);
for(int i=0;i<counttt;i++)
{
if(a[i].name==a[i+1].name)
{
a[i+1].num+=a[i].num;
a[i+1].value+=a[i].value;
a[i].name="GSwin";
}
}
sort(a,a+counttt,CCC);
for(int i=0;i<counttt;i++)
{
if(a[i].name!="GSwin")
{
cout<<a[i].name<<" "<<a[i].num<<" "<<a[i].value<<endl;
}
}
return 0;
}