QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#23785#2281. BnPCgalaxias#WA 236ms22552kbC++142.2kb2022-03-19 14:32:262022-04-30 04:08:20

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-04-30 04:08:20]
  • 评测
  • 测评结果:WA
  • 用时:236ms
  • 内存:22552kb
  • [2022-03-19 14:32:26]
  • 提交

answer

//
// Created by onglu on 2022/3/19.
//

#include <bits/stdc++.h>

#define all(a) a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()

#define endl '\n'
#define lson (rt << 1)
#define rson (rt << 1 | 1)
#define Mid ((l + r) / 2)
#define int long long
using namespace std;
const int N = 2e5 + 1009;
map<string, int> M;
struct task {
    int id, cnt, maxn;
    int inc;
} a[N];
vector<int> v[N];
int n, m;
int q;
int ans = 0;
int scr[N], maxcnt;
void work() {
    cin >> n >> m;
    for(int i = 1; i <= n; i++) {
        string s;
        cin >> s;
        M[s] = i;
        cin >> scr[M[s]];
        a[i].id = i;
    }
    cin >> q;
    while(q--) {
        string s;
        int x;
        cin >> s >> x;
        a[M[s]].maxn = max(a[M[s]].maxn, x);
        a[M[s]].cnt++;
        v[M[s]].push_back(x);
        maxcnt = max(maxcnt, a[M[s]].cnt);
    }
    for(int i = 1; i <= n; i++) {
        sort(all(v[i]));
    }
    for(int i = 1; i <= n; i++) {
        if(a[i].maxn < scr[i]) {
            ans += scr[i] * a[i].cnt;
            a[n].id = i;
            swap(a[n], a[i]);
            swap(scr[i], scr[n]);
            n--;
            i--;
        } else {
            for(auto x : v[a[i].id]) {
                if(x < a[i].maxn) {
                    ans += a[i].maxn;
                    a[i].inc++;
                } else {
                    a[i].inc += x + 1;
                }
            }
            m -= a[i].maxn - scr[i];
            scr[i] = a[i].maxn;
        }
    }
    if(m < 0) {
        cout << 0 << endl;
        return ;
    }
    sort(a + 1, a + 1 + n, [](const task &a, const task &b) {
        return a.inc > b.inc;
    });
    for(int i = 1; i <= n && m > 0; i++) {
        if(a[i].inc >= maxcnt) {
            ans += a[i].inc;
            m -= 1;
        } else {
            break;
        }
    }
    ans += m * maxcnt;
    cout << ans << endl;
}

signed main() {
#ifdef LOCAL
    freopen("C:\\Users\\onglu\\CLionProjects\\acm\\data.in", "r", stdin);
    freopen("C:\\Users\\onglu\\CLionProjects\\acm\\data.out", "w", stdout);
#endif
    ios::sync_with_stdio(false);
    cin.tie(0);
    work();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 4ms
memory: 9712kb

input:

3 14
THISISTHEONE 8
B 0
C 0
8
THISISTHEONE 10
C 0
B 1
B 0
THISISTHEONE 0
C 1
THISISTHEONE 0
THISISTHEONE 0

output:

82

result:

ok single line: '82'

Test #2:

score: 0
Accepted
time: 4ms
memory: 9768kb

input:

3 99
THEFIRSTINCREASE 6
SECONDINCREASE 4
ZZZ 1
9
THEFIRSTINCREASE 4
ZZZ 0
THEFIRSTINCREASE 6
SECONDINCREASE 8
THEFIRSTINCREASE 2
SECONDINCREASE 1
ZZZ 0
SECONDINCREASE 8
THEFIRSTINCREASE 3

output:

429

result:

ok single line: '429'

Test #3:

score: 0
Accepted
time: 1ms
memory: 9740kb

input:

5 20
A 100
B 200
C 300
D 400
E 500
949
A 39
A 23
C 163
A 98
B 36
A 3
A 52
B 152
B 167
B 65
C 142
B 66
B 117
C 288
C 155
E 341
A 97
D 173
E 31
A 62
D 90
E 361
A 42
D 85
E 1
C 141
B 77
B 194
D 221
E 203
D 345
E 48
B 26
D 46
B 74
E 380
B 181
C 243
B 112
A 99
E 403
C 20
E 453
C 149
B 26
E 245
A 74
D 304...

output:

285180

result:

ok single line: '285180'

Test #4:

score: 0
Accepted
time: 5ms
memory: 9716kb

input:

2 1
A 10
B 12
3
A 10
B 10
B 10

output:

35

result:

ok single line: '35'

Test #5:

score: 0
Accepted
time: 5ms
memory: 9808kb

input:

1 1
OVERENTHUSIASTICNESS 41
1
OVERENTHUSIASTICNESS 0

output:

42

result:

ok single line: '42'

Test #6:

score: -100
Wrong Answer
time: 236ms
memory: 22552kb

input:

100000 1000000000
A 1000000000
B 1000000000
C 1000000000
D 1000000000
E 1000000000
F 1000000000
G 1000000000
H 1000000000
I 1000000000
J 1000000000
K 1000000000
L 1000000000
M 1000000000
N 1000000000
O 1000000000
P 1000000000
Q 1000000000
R 1000000000
S 1000000000
T 1000000000
U 1000000000
V 1000000...

output:

63337999742530

result:

wrong answer 1st lines differ - expected: '100007999593560', found: '63337999742530'