結果
| 問題 |
No.447 ゆきこーだーの雨と雪 (2)
|
| ユーザー |
hotpepsi
|
| 提出日時 | 2016-11-30 01:00:50 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 19 ms / 2,000 ms |
| コード長 | 1,014 bytes |
| コンパイル時間 | 1,122 ms |
| コンパイル使用メモリ | 98,128 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-11-27 13:51:39 |
| 合計ジャッジ時間 | 2,259 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 25 |
ソースコード
#include <iostream>
#include <sstream>
#include <map>
#include <vector>
#include <algorithm>
#include <numeric>
#include <cstdio>
using namespace std;
int main(int argc, char *argv[]) {
int N, T, L[32], F[32] = {};
map<string, vector<int> > S;
map<string, int> timestamp;
cin >> N;
for (int i = 0; i != N; ++i) {
cin >> L[i];
}
cin >> T;
for (int i = 0; i != T; ++i) {
string name, p;
cin >> name >> p;
int pn = p[0] - 'A';
++F[pn];
int score = (int)(50 * L[pn] * (1 + 1 / (0.8 + 0.2 * F[pn])) + 1e-12);
S[name].resize(N);
S[name][pn] = score;
timestamp[name] = i;
}
vector<tuple<int, int, string> > v;
for (auto kv : S) {
v.push_back(make_tuple(-accumulate(kv.second.begin(), kv.second.end(), 0), timestamp[kv.first], kv.first));
}
sort(v.begin(), v.end());
for (int i = 0; i != v.size(); ++i) {
string &name = get<2>(v[i]);
cout << (i + 1) << " " << name;
for (auto a : S[name]) {
cout << " " << a;
}
cout << " " << -get<0>(v[i]);
cout << endl;
}
return 0;
}
hotpepsi