题目:
我的答案:
#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;}