1. 程式人生 > >銷售排行榜

銷售排行榜

題目描述
你的任務是幫助淘寶網店店長整理銷售資料,根據累計的銷售記錄,將所有商品
按銷售數量降序排列。
輸入
輸入包括多行資料(行數小於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; 
}