题目描述
仓库里面堆积着很多的货物。小可放假归来,发现仓库里多了许多的货物。
小可作为仓库管理员,需要对新多出来的货物进行分类整理。但是这段时间多出来的货物太多了,你能帮小可整理一下吗?
输入描述
第一行一个正整数T(1≤ T≤ 10),代表有T组数据。
对于每组数据,第一行有一个正整数n,代表有n条入库记录。
接下来有n行入库记录。
每个入库记录由字符串a,b和一个正整数m(1≤ m≤ 100)组成,a是货物名,b是货物来源,m是数量。这两个字符串的长度都不长于80。
输出描述
请输出合并整理后格式正确的货物统计表。格式为:
把货物按照来源地分类,来源地按照字典序排序输出。每个来源地都有下级分类。
每个来源地下级分类中,每一行输出三个空格,一个|,四个-,用来保持缩进。子分类中,将来源地是此来源地的货物按照字典序排序,每个货物后面有一个括号,里面写货物的总数量。
具体格式参考样例
样例
输入
1 5 pencil shandong 3 eraser guangdong 1 water sichuan 1 eraser guangdong 3 water guangdong 1
输出
guangdong |----eraser(4) |----water(1) shandong |----pencil(3) sichuan |----water(1)
提示
注意:多组测试数据中,每组数据的输出之间间隔一个换行
代码
#include<bits/stdc++.h>
using namespace std;
map<string,map<string , int > > a;
int main(){
int t;
cin>>t;
while(t--){
int n,s;
cin>>n;
a.clear();
string s1,s2;
for(int i=1;i<=n;i++){
cin>>s1>>s2>>s;
a[s2][s1]+=s;
}
for(pair<string,map<string,int > > it:a){
cout<<it.first<<endl;
for(pair<string,int > mi:it.second){
cout<<" |----"<<mi.first<<"("<<mi.second<<")"<<endl;
}
}
a.clear();
if(t) cout<<endl;
}
return 0;
}
201

被折叠的 条评论
为什么被折叠?



