結果
問題 | 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;}