結果
| 問題 |
No.449 ゆきこーだーの雨と雪 (4)
|
| ユーザー |
Kmcode1
|
| 提出日時 | 2016-11-18 23:04:05 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,210 bytes |
| コンパイル時間 | 2,120 ms |
| コンパイル使用メモリ | 206,028 KB |
| 実行使用メモリ | 65,272 KB |
| 最終ジャッジ日時 | 2024-09-22 09:32:13 |
| 合計ジャッジ時間 | 18,047 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 10 WA * 33 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:70:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
70 | scanf("%d", &t);
| ~~~~~^~~~~~~~~~
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);
| ~~~~~^~~~~~~~~~~
main.cpp:74:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
74 | scanf("%s", buf);
| ~~~~~^~~~~~~~~~~
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define MAX 1007
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<long double> bit;
void resize(int N){
bit.assign(N+5, 0);
}
void add(int i, long double j){
i++;
while (i < bit.size()){
bit[i] += j;
i += i&-i;
}
}
long double sum(int i){
long double r = 0;
i++;
while (i){
r += bit[i];
i -= i&-i;
}
return r;
}
};
map<int, int> cnt2;
map<int, BIT> mp2;
map<string, int> las_id;
map<string, int> las_att;
vector<int> gain;
vector<int> ich;
BIT bit;
map<int, int> MM;
map<int, int> CNT;
map<int, set<string> > solved;
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;
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;
}
else{
}
pat[nam] += gt(nn[0] - 'A');
if (solved[pat[nam]].count(nam)){
v.pop_back();
continue;
}
solved[pat[nam]].insert(nam);
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++){
if (v[i].second[0] == '?'){
int SUM = mp2[las_id[v[i].first]].sum(las_att[v[i].first]);
SUM += bit.sum(MM.size()-1);
SUM -= bit.sum(MM[las_id[v[i].first]]);
printf("%d\n", SUM);
}
else{
if (las_id.count(v[i].first)){
mp2[las_id[v[i].first]].add(las_att[v[i].first], -1);
bit.add(MM[las_id[v[i].first]], -1);
}
gt(v[i].second[0]-'A');
CNT[gain[i]]++;
int cc = CNT[gain[i]];
las_id[v[i].first] = gain[i];
las_att[v[i].first] = cc-1;
bit.add(MM[las_id[v[i].first]], 1);
mp2[gain[i]].add(cc - 1, 1);
}
}
return 0;
}
Kmcode1