結果
| 問題 |
No.449 ゆきこーだーの雨と雪 (4)
|
| ユーザー |
Kmcode1
|
| 提出日時 | 2016-11-18 23:32:56 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,024 bytes |
| コンパイル時間 | 2,180 ms |
| コンパイル使用メモリ | 200,160 KB |
| 実行使用メモリ | 64,336 KB |
| 最終ジャッジ日時 | 2024-09-22 10:08:58 |
| 合計ジャッジ時間 | 16,080 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 10 WA * 33 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:67:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
67 | scanf("%d", &t);
| ~~~~~^~~~~~~~~~
main.cpp:69:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
69 | scanf("%s", buf);
| ~~~~~^~~~~~~~~~~
main.cpp:72:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
72 | scanf("%s", buf);
| ~~~~~^~~~~~~~~~~
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define MAX 100007
int L[MAX];
int n;
int cnt[MAX];
int gt(int id){
cnt[id]++;
int val = 50 * L[id];
val += floor((50.0 * (double)(L[id])) / (0.8 + 0.2*(double)(cnt[id])));
return val;
}
vector<pair<string, string> > v;
char buf[500];
map<int, vector<string> > mp;
map<string, int> pat;
struct BIT{
vector<int> bit;
void resize(int N){
bit.assign(N+5, 0);
}
void add(int i, int j){
i++;
while (i < bit.size()){
bit[i] += j;
i += i&-i;
}
}
int sum(int i){
int r = 0;
i++;
while (i){
r += bit[i];
i -= i&-i;
}
return r;
}
};
map<int, BIT> mp2;
map<string, int> las_id;
map<string, int> las_att;
vector<int> gain;
BIT bit;
map<int, int> MM;
map<int, int> CNT;
set<string> SS;
int main(){
cin >> n;
for (int i = 0; i < n; i++){
cin >> L[i];
}
int t;
scanf("%d", &t);
for (int i = 0; i < t; i++){
scanf("%s", buf);
string nam = buf;
SS.insert(nam);
scanf("%s", buf);
string nn = buf;
v.push_back(make_pair(nam, nn));
if (pat.count(nam)){
}
else{
pat[nam] = 0;
}
if (nn[0] == '?'){
gain.push_back(0);
continue;
}
pat[nam] += gt(nn[0] - 'A');
mp[pat[nam]].push_back(nam);
gain.push_back(pat[nam]);
}
t = v.size();
int ii = 0;
for (auto it = mp.begin(); it != mp.end(); it++){
mp2[(*it).first].resize((*it).second.size() + 1);
MM[(*it).first] = ii;
ii++;
}
bit.resize(MM.size());
for (int i = 0; i < t; i++){
string name = v[i].first;
if (v[i].second[0] == '?'){
int SUM = mp2[las_id[name]].sum(las_att[v[i].first]);
SUM += bit.sum(MM.size()-1);
SUM -= bit.sum(MM[las_id[name]]);
if (SUM <= 0 || SUM > SS.size())return 1;
printf("%d\n", SUM);
}
else{
if (las_id.count(v[i].first)){
mp2[las_id[name]].add(las_att[name], -1);
bit.add(MM[las_id[name]], -1);
}
CNT[gain[i]]++;
int cc = CNT[gain[i]];
las_id[name] = gain[i];
las_att[name] = cc-1;
bit.add(MM[gain[i]], 1);
mp2[gain[i]].add(cc - 1, 1);
}
}
return 0;
}
Kmcode1