祖传打模拟。

需要考虑R数组的去重和排序,然后仔细阅读题意即可。

#include <bits/stdc++.h>
#include <string>
#include <vector>
using namespace std;

vector<int> l;
vector<int> r;

vector<int> ans;

int main() {
    int n, m;
    int a;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> a;
        l.push_back(a);
    }
    cin >> m;
    for (int j = 0; j < m; j++) {
        cin >> a;
        r.push_back(a);
    }
    sort(r.begin(), r.end());
    r.erase(unique(r.begin(), r.end()), r.end());

    for (int i = 0; i < r.size(); i++) {
        bool find = false;
        vector<int> tmp;
        for (int k = 0; k < l.size(); k++) {
            if (to_string(l[k]).find(to_string(r[i])) != to_string(l[k]).npos) {
                find = true;
                tmp.push_back(k);
                tmp.push_back(l[k]);
            }
        }
        if (find) {
            ans.push_back(r[i]);
            ans.push_back(tmp.size()/2);
            for (auto item : tmp) ans.push_back(item);
        }
    }
    cout << ans.size() << " ";
    for(int item: ans) cout << item << " ";
    return 0;
}
// 64 位输出请用 printf("%lld")