http://acm.hdu.edu.cn/showproblem.php?pid=1263
。。输出统计结果嘛,相对而言比较水。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
#define M 105
struct fruit_node{
string place,name;
int num;
};
fruit_node trade[M];
bool cmp(fruit_node a,fruit_node b){
if (a.place<b.place)
return true;
if (a.place==b.place&&a.name<b.name)
return true;
return false;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("Kin.txt","r",stdin);
#endif
int n,m,ce=0,i,num,c;
string name,place;
scanf("%d",&n);
while (n--){
ce++;
scanf("%d",&m);
for (i=0;i<m;i++){
cin>>trade[i].name>>trade[i].place;
scanf("%d",&trade[i].num);
}
sort(trade,trade+m,cmp);
name=trade[0].name;
place=trade[0].place;
num=trade[0].num;
c=0;
if (ce!=1)
printf("\n");
for (i=1;i<m;i++){
if(name==trade[i].name&&place==trade[i].place)
num+=trade[i].num;
else if (place==trade[i].place&&name!=trade[i].name){
if (c==0){
cout<<place<<endl;
c=1;
}
cout<<" |----"<<name<<"("<<num<<")"<<endl;
name=trade[i].name;
num=trade[i].num;
}
else {
if (c==0)
cout<<place<<endl;
cout<<" |----"<<name<<"("<<num<<")"<<endl;
name=trade[i].name;
num=trade[i].num;
name=trade[i].name;
place=trade[i].place;
num=trade[i].num;
c=0;
}
}
if (c==0)
cout<<place<<endl;
cout<<" |----"<<name<<"("<<num<<")"<<endl;
}
return 0;
}