HJ25 数据分类处理
我的答案:
#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <map>
using namespace std;
bool match(const int R, const string &I)
{
if (I.find(to_string(R)) != std::string::npos)
{
return true;
}
return false;
}
int main() {
int iNum;
int rNum;
int iItem;
string sItem;
cin >> iNum;
vector<string> Is;
while (iNum-- > 0)
{
cin >> sItem;
Is.push_back(sItem);
}
cin >> rNum;
map<int, vector<pair<int, string>>> IPairs;
while (rNum-- > 0)
{
cin >> iItem;
vector<pair<int, string>> tmp;
IPairs[iItem] = tmp;
}
for (auto &it : IPairs)
{
for (int i = 0; i < Is.size(); i++)
{
if (match(it.first, Is[i]))
{
it.second.emplace_back(i, Is[i]);
}
}
}
int ansNum = 0;
for (auto &it : IPairs)
{
if (it.second.size() != 0)
{
ansNum += 2;
ansNum += 2 * it.second.size();
}
}
cout << ansNum << " ";
for (auto &it : IPairs)
{
if (it.second.size() != 0)
{
cout << it.first << " " << it.second.size() << " ";
for (auto &itt : it.second)
{
cout << itt.first << " " << itt.second << " ";
}
}
}
return 0;
}



浙公网安备 33010602011771号