夏天来了~~好开心啊,呵呵,好多好多水果~~
Joe经营着一个不大的水果店.他认为生存之道就是经营最受顾客欢迎的水果.现在他想要一份水果销售情况的明细表,这样Joe就可以很容易掌握所有水果的销售情况了.
Joe经营着一个不大的水果店.他认为生存之道就是经营最受顾客欢迎的水果.现在他想要一份水果销售情况的明细表,这样Joe就可以很容易掌握所有水果的销售情况了.
Input
每组测试数据的第一行是一个整数M(0<M<=100),表示工有M次成功的交易.其后有M行数据,每行表示一次交易,由水果名称(小写字母组成,长度不超过80),水果产地(小写字母组成,长度不超过80)和交易的水果数目(正整数,不超过100)组成.
两组测试数据之间有一个空行.最后一组测试数据之后没有空行.
1 5 apple shandong 3 pineapple guangdong 1 sugarcane guangdong 1 pineapple guangdong 3 pineapple guangdong 1
guangdong |----pineapple(5) |----sugarcane(1) shandong |----apple(3)
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<stdlib.h>
#include<map>
#include<algorithm>
using namespace std;
struct Node
{
string place;
string friut;
int num;
} node[200];
bool cmp(const Node&p,const Node&q)
{
return (p.place<q.place||(p.place==q.place&&p.friut<q.friut)||(p.place==q.place&&p.friut==q.friut&&p.num<q.num));
}
int main()
{
int t,n;
cin>>t;
int t1=t;
while(t--)
{
if(t!=t1-1)
printf("\n");
cin>>n;
getchar();
for(int i=0; i<n; ++i)
{
cin>>node[i].friut;
cin>>node[i].place;
cin>>node[i].num;
}
sort(node,node+n,cmp);
string tsp=node[0].place;
string tsf=node[0].friut;
for(int i=1; i<n; ++i)
if(tsp==node[i].place)
{
if(tsf==node[i].friut)
{
node[i].num+=node[i-1].num;
node[i-1].num=0;
}
else
{
tsf=node[i].friut;
}
}
else
{
tsp=node[i].place;
tsf=node[i].friut;
}
tsp="";
tsf="";
for(int i=0; i<n; ++i)
{
if(tsp!=node[i].place)
{
tsp=node[i].place;
cout<<tsp<<endl;
}
if(node[i].num)
{
tsf=node[i].friut;
cout<<" |----"<<tsf<<"("<<node[i].num<<")"<<endl;
}
}
}
}