#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { int i, j, k; int n; mapmp; cin >> n; for (i = 0; i < n; i++) { int num; cin >> num; int m, s; cin >> m >> s; for (j = 0; j < m; j++) { string str; cin >> str; if (mp.count(str) == 0) { mp.insert(make_pair(str, s)); } else { mp[str] += s; } } } //mapmp2; vector>list; for (auto itr = mp.begin(); itr != mp.end(); itr++) { list.push_back(make_pair((*itr).second, (*itr).first)); } sort(list.begin(), list.end(), greater>()); //map::reverse_iterator itr2 = mp.rbegin(); while (true) { bool flag = false; for (i = 0; i < list.size() - 1; i++) { if (list[i].first == list[i + 1].first) { for (j = 0; j < list[i].second.length() || j < list[i + 1].second.length(); j++) { if (list[i].second[j] != list[i + 1].second[j]) { if ((int)list[i].second[j] > (int)list[i + 1].second[j]) { swap(list[i], list[i + 1]); flag = true; break; } else { break; } } } if (flag == true)break; } } if (flag == false) break; } if (list.size() <= 10) { for (i = 0; i < list.size(); i++) { cout << list[i].second << " " << list[i].first << endl; } } else { for (i = 0; i < 10; i++) { cout << list[i].second << " " << list[i].first << endl; } } getchar(); getchar(); return 0; }