题目描述
你的任务是帮助淘宝网店店长整理销售数据,根据累计的销售记录,将所有商品
按销售数量降序排列。
输入
输入包括多行数据(行数小于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
代码如下:
1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 #include<stdlib.h> 5 #define MAX 100000 6 using namespace std; 7 8 struct good 9 { 10 string name; 11 int num; 12 int value; 13 }; 14 15 good a[100000]; 16 int counttt=0; 17 18 int CCC(good a,good b) 19 { 20 if(a.num!=b.num) 21 { 22 return a.num>b.num; 23 } 24 else return a.name<b.name; 25 } 26 27 int CCC2(good a,good b) 28 { 29 return a.name<b.name; 30 } 31 32 int main() 33 { 34 string name,date; 35 int num,price; 36 while(cin>>name>>num>>price>>date) 37 { 38 a[counttt].name=name; 39 a[counttt].num=num; 40 a[counttt].value=num*price; 41 counttt++; 42 } 43 sort(a,a+counttt,CCC2); 44 for(int i=0;i<counttt;i++) 45 { 46 if(a[i].name==a[i+1].name) 47 { 48 a[i+1].num+=a[i].num; 49 a[i+1].value+=a[i].value; 50 a[i].name="GSwin"; 51 52 } 53 } 54 sort(a,a+counttt,CCC); 55 for(int i=0;i<counttt;i++) 56 { 57 if(a[i].name!="GSwin") 58 { 59 cout<<a[i].name<<" "<<a[i].num<<" "<<a[i].value<<endl; 60 } 61 } 62 return 0; 63 }