結果

問題 No.449 ゆきこーだーの雨と雪 (4)
ユーザー はまやんはまやん
提出日時 2017-04-20 12:39:09
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
TLE  
実行時間 -
コード長 1,515 bytes
コンパイル時間 1,791 ms
コンパイル使用メモリ 177,856 KB
実行使用メモリ 29,264 KB
最終ジャッジ日時 2024-09-22 10:33:01
合計ジャッジ時間 13,870 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 11 TLE * 1 -- * 31
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<b;i++)




int N, L[30], T;
int M; string Dic[101010];
int ID[101010], Pro[101010];
//-----------------------------------------------------------------------------------
string Name[101010]; char P[101010];
void init() {
    cin.tie(0);
    ios::sync_with_stdio(false);

    cin >> N;
    rep(i, 0, N) cin >> L[i];
    cin >> T;
    rep(i, 0, T) cin >> Name[i] >> P[i];

    map<string, int> za;
    rep(i, 0, T) za[Name[i]] = 0;
    M = za.size();
    int idx = 0;
    for (auto& p : za) za[p.first] = idx, idx++;
    for (auto& p : za) Dic[p.second] = p.first;

    rep(i, 0, T) {
        ID[i] = za[Name[i]];
        if(P[i] == '?') Pro[i] = -1;
        else Pro[i] = P[i] - 'A';
    }
}
//-----------------------------------------------------------------------------------
int cnt[30];
int E[101010][30];
int sm[101010], lastsub[101010];
int main() {
    init();

    rep(t, 0, T) {
        int id = ID[t];
        int pid = Pro[t];

        if (pid < 0) {
            int ans = 1;
            rep(i, 0, M) if (i != id) {
                if (sm[id] < sm[i]) ans++;
                else if (sm[id] == sm[i] && lastsub[i] < lastsub[id]) ans++;
            }
            printf("%d\n", ans);
        } else {
            int rank = cnt[pid] + 1;
            cnt[pid]++;

            int p = 50 * L[pid] + 500 * L[pid] / (8 + 2 * rank);

            E[id][pid] = p;
            sm[id] += p;
            lastsub[id] = t;
        }
    }
}
0