結果
| 問題 |
No.628 Tagの勢い
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-01-18 17:45:11 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 4 ms / 2,000 ms |
| コード長 | 1,004 bytes |
| コンパイル時間 | 1,233 ms |
| コンパイル使用メモリ | 93,804 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-07 22:27:10 |
| 合計ジャッジ時間 | 2,160 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 19 |
ソースコード
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <algorithm>
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<string,int> myMap;
map<string,int>::iterator mit;
for (i=0;i<N;i++){
int No;
int M,S;
cin>>No;
cin>>M>>S;
int m;
string Tag;
for (m=0;m<M;m++){
cin>>Tag;
mit=myMap.find(Tag);
if (mit==myMap.end()){
myMap[Tag]=S;
}else{
(*mit).second+=S;
}
}
}
vector<X> 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<myVector.size();i++){
if (i==10){
break;
}
cout<<myVector[i].tag<<" "<<myVector[i].num<<endl;
}
return 0;
}