結果
| 問題 |
No.628 Tagの勢い
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-10-23 22:05:58 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
RE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 1,045 bytes |
| コンパイル時間 | 603 ms |
| コンパイル使用メモリ | 58,392 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-10-07 22:59:39 |
| 合計ジャッジ時間 | 3,583 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 5 RE * 14 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:32:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
32 | scanf("%*d%d%d", &M, &S);
| ~~~~~^~~~~~~~~~~~~~~~~~~
ソースコード
#include <iostream>
#include <string>
#include <cstdio>
#include <cstdlib>
using namespace std;
struct s {
int score;
string word;
};
int compare(const void *x, const void *y) {
return ((s*)y)->score - ((s*)x)->score;
}
void insertionSort(int *top, s tag[]) {
int j;
s tmp;
for (int i = 1; i < *top; ++i) {
tmp = tag[i];
for (j = i - 1; j >= 0 && tag[j].word > tmp.word && tag[j].score == tmp.score; --j) tag[j + 1] = tag[j];
tag[j + 1] = tmp;
}
}
int main() {
int N, M, S, top = 0, k;
string tmp;
s tag[10000];
cin >> N;
for (int i = 0; i < N; ++i) {
scanf("%*d%d%d", &M, &S);
for (int j = 0; j < M; ++j) {
cin >> tmp;
for (k = 0; k < top; ++k) {
if (tag[k].word == tmp) break;
}
if (k == top) {
tag[top].word = tmp;
tag[top].score = S;
++top;
}
else tag[k].score += S;
}
}
qsort(tag, top, sizeof(s), compare);
insertionSort(&top, tag);
for (int i = 0; i < 10 && i < top; ++i) cout << tag[i].word << " " << tag[i].score << endl;
}