分组统计

分组统计

#include "pch.h"
#include<map>
#include<vector>
#include <iostream>
#include<set>
using namespace std;
int main()
{
	int m;
	cin >> m;
	while (m--)
	{
		int n;
		cin >> n;
		vector<int> v_elem, v_arr;
		set<int> iset, set1;
		for (int i = 0; i < n; i++)
		{
			int a; cin >> a;
			v_elem.push_back(a);
			iset.insert(a);
		}
		for (int i = 0; i < n; i++)
		{
			int a; cin >> a;
			v_arr.push_back(a);
			set1.insert(a);
		}
		map<int, map<int, int> > imap;
		for (int i = 0; i < v_arr.size(); i++)
		{
			imap[v_arr[i]][v_elem[i]]++;
		}
		/*
		for (auto it = imap.begin(); it != imap.end(); it++)
		{
			cout << it->first << "={";
			int i = 0;
			auto is = iset.begin();
			for (; is!=iset.end(),i<iset.size()-1; is++,i++)
				cout << *is << "=" << imap[it->first][*is] << ",";
			cout << *(is++) << "=" << imap[it->first][*(is)] << "}" << endl;
		}*/
		for (auto it = set1.begin(); it != set1.end(); it++)
		{
			cout << *it << "={";
			int i = 0;
			auto is = iset.begin();
			for (; is != iset.end(), i < iset.size() - 1; is++, i++)
			{
				cout << *is << "=" << imap[*it][*is] << ",";
			}
			cout << *(is++) << "=" << imap[*it][*is] << "}" << endl;
		}
	}

}