#include <bits/stdc++.h>
using namespace std;
struct vc {
vector <string> a;
int now, id;
} v[1005];
string x[1005], tmp[1005][1005];
struct cmp {
bool operator()(const vc &a, const vc &b) {
return tmp[a.id][a.now+1] > tmp[b.id][b.now+1];
}
};
priority_queue <vc, vector<vc>, cmp> q;
int main() {
int n, l, sum_L = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> l; sum_L += l;
v[i].id = i; v[i].now = 1;
for (int j = 1; j <= l; j++) {
cin >> x[j];
v[i].a.push_back(x[j]);
}
for (int j = l; j >= 1; j--) {
tmp[i][j] = x[j] + '9' + tmp[i][j+1];
}
q.push(v[i]);
}
for (int i = 1; i <= sum_L; i++) {
vc p = q.top();
cout << p.now << "\n";
cout << p.a[p.now++] << " ";
q.pop();
q.push(p);
}
}
输入样例:
3
1 2
1 100
1 1
是因为我多看了一眼吗