結果
問題 | No.447 ゆきこーだーの雨と雪 (2) |
ユーザー |
![]() |
提出日時 | 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; }