#include #include #include #include #include using namespace std; struct X{ int num; string tag; X(int n,string t){ num=n; tag=t; } }; bool Bigger(X &l,X&r){ if (l.num>r.num){ return true; }else if (l.num==r.num){ if (l.tag.compare(r.tag)<0){ return true; } } return false; } int main(int argc, char* argv[]) { int N; cin>>N; int i; map myMap; map::iterator mit; for (i=0;i>No; cin>>M>>S; int m; string Tag; for (m=0;m>Tag; mit=myMap.find(Tag); if (mit==myMap.end()){ myMap[Tag]=S; }else{ (*mit).second+=S; } } } vector myVector; for (mit=myMap.begin();mit!=myMap.end();mit++){ X x((*mit).second,(*mit).first); myVector.push_back(x); } sort(myVector.begin(),myVector.end(),Bigger); for (i=0;i