#include <cstdio>
#include <map>
#include <algorithm>
#include <set>
using namespace std;
int main() {
int m;
while (scanf("%d", &m) != EOF) {
for (int i = 0; i < m; ++i) {
int n;
scanf("%d", &n);
set<int> nums;
map<int, map<int, int>> group;
//input
int a[n];
for (int j = 0; j < n; ++j) {
int t;
scanf("%d", &t);
a[j] = t;
nums.insert(t);
}
for (int k = 0; k < n; ++k) {
int t;
scanf("%d", &t);
auto it = group.find(t);
if (it == group.end()) {
map<int, int> temp;
group.insert(make_pair(t, temp));
}
it = group.find(t);
map<int, int> &tt2 = it->second;
int t3 = a[k];
auto it2 = tt2.find(t3);
if (it2 == tt2.end()) {
tt2.insert(make_pair(t3, 1));
} else {
tt2[t3]++;
}
}
//output
for (auto it = group.begin(); it != group.end(); it++) {
int key = it->first;
map<int, int> v = it->second;
printf("%d={", key);
for (auto it2 = nums.begin(); it2 != nums.end(); it2++) {
auto it3 = v.find(*it2);
if (it3 == v.end()) {
printf("%d=0", *it2);
} else {
printf("%d=%d", *it2, it3->second);
}
if (it2 != --nums.end()) {
printf(",");
}
}
printf("}\n");
}
}
}
return 0;
}
问题 B: 分组统计
最新推荐文章于 2024-10-16 00:00:43 发布