HDU 1263フルーツ(STLのmapネスト)
8234 ワード
フルーツ
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1362 Accepted Submission(s): 532
Problem Description
夏が来ました~~楽しいですね、ほほほ、果物がたくさんあります~~
Joeは大きな果物屋を経営しています.彼は生存の道が最も顧客に人気のある果物を経営することだと思っています.今、果物の販売状況の明細表がほしいです.そうすれば、Joeはすべての果物の販売状況を簡単に把握することができます.
Input
1行目の正の整数N(0各グループのテストデータの最初の行は整数M(0
Output
各グループのテストデータについて、正しいレイアウトの果物の販売状況の集計表を出力してください.この集計表には、すべての果物の産地、名前、販売数の情報が含まれています.果物はまず産地別に分類され、産地はアルファベット順に並べられています.同じ産地の果物は名前順に並べられ、名前はアルファベット順に並べられている.
2組のテストデータの間に空の行がある.最後のテストデータのセットの後に空の行がない.
Sample Input
1
5
apple shandong 3
pineapple guangdong 1
sugarcane guangdong 1
pineapple guangdong 3
pineapple guangdong 1
Sample Output
guangdong
|----pineapple(5)
|----sugarcane(1)
shandong
|----apple(3)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1362 Accepted Submission(s): 532
Problem Description
夏が来ました~~楽しいですね、ほほほ、果物がたくさんあります~~
Joeは大きな果物屋を経営しています.彼は生存の道が最も顧客に人気のある果物を経営することだと思っています.今、果物の販売状況の明細表がほしいです.そうすれば、Joeはすべての果物の販売状況を簡単に把握することができます.
Input
1行目の正の整数N(0
Output
各グループのテストデータについて、正しいレイアウトの果物の販売状況の集計表を出力してください.この集計表には、すべての果物の産地、名前、販売数の情報が含まれています.果物はまず産地別に分類され、産地はアルファベット順に並べられています.同じ産地の果物は名前順に並べられ、名前はアルファベット順に並べられている.
2組のテストデータの間に空の行がある.最後のテストデータのセットの後に空の行がない.
Sample Input
1
5
apple shandong 3
pineapple guangdong 1
sugarcane guangdong 1
pineapple guangdong 3
pineapple guangdong 1
Sample Output
guangdong
|----pineapple(5)
|----sugarcane(1)
shandong
|----apple(3)
#include <set>
#include <map>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <cstdio>
#include <string>
#include <vector>
#include <cctype>
#include <cstring>
#include <sstream>
#include <fstream>
#include <cstdlib>
#include <cassert>
#include <iostream>
#include <algorithm>
using namespace std;
//Constant Declaration
/*--------------------------*/
//#define LL long long
#define LL __int64
const int M=1000000;
const int INF=1<<30;
const double EPS = 1e-11;
const double PI = acos(-1.0);
/*--------------------------*/
// some essential funtion
/*----------------------------------*/
void Swap(int &a,int &b){ int t=a;a=b;b=t; }
int Max(int a,int b){ return a>b?a:b; }
int Min(int a,int b){ return a<b?a:b; }
int Gcd(int a,int b){ while(b){b ^= a ^=b ^= a %= b;} return a; }
/*----------------------------------*/
//for (i = 0; i < n; i++)
/*----------------------------------*/
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int t, case1 = 0;
scanf("%d", &t);
int n, m;
int i, j;
//scanf("%d%d", &n, &m);
while (t--)
{
if (case1 == 0)
{
case1++;
}
else
{
puts("");
}
string place, fruit;
map <string, map<string, int> > A;// map, >> , Compilation Error
scanf("%d" ,&n);
for (i = 0; i < n; i++)
{
cin >> fruit >> place >> m;
A[place][fruit] += m;
}
map <string, map<string, int> > :: iterator iter1;//
for (iter1 = A.begin(); iter1 != A.end(); iter1++)
{
cout << iter1->first << endl;
map<string, int> :: iterator iter2;//2
for (iter2 = iter1->second.begin(); iter2 != iter1->second.end(); iter2++)
{
cout << " |----" << iter2->first << "(" << iter2->second << ")" << endl;
}
}
}
return 0;
}