QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#694875#9528. New Energy VehicleBrotherCallWA 0ms3844kbC++201.5kb2024-10-31 18:51:492024-10-31 18:51:50

Judging History

This is the latest submission verdict.

  • [2024-10-31 18:51:50]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 3844kb
  • [2024-10-31 18:51:49]
  • Submitted

answer

#include <bits/stdc++.h>
#define int long long
using namespace std;

void solve() {
    int n , m;
    cin >> n >> m;
    vector<int> a(n + 1);
    vector<int> b(n + 1);
    int sum = 0;
    for(int i = 1;i <= n;i ++) 
        cin >> a[i] , sum += a[i];
    vector<int> x(m + 1) , t(m + 1);
    vector<int> lst(n + 1) , nxt(m + 1);
    for(int i = 1;i <= m;i ++) 
        cin >> x[i] >> t[i];
    for(int i = m;i >= 1;i --) {
        nxt[i] = lst[t[i]];
        lst[t[i]] = i;
    }
    for(int i = 1;i <= n;i ++) 
        lst[i] = 0;
    priority_queue<int , vector<int> , greater<int> > pq;
    for(int i = 1;i <= m;i ++) {
        if(lst[t[i]] == 0) pq.push(i);
        lst[t[i]] = 1;
    }
    int now = 0;
    for(int i = 1;i <= m;i ++) {

        if(x[i - 1] + (sum - now) < x[i]) {
            cout << x[i - 1] + sum - now << "\n";
            return ;
        }

        int del = x[i] - x[i - 1];
        while(pq.size() && del >= (a[pq.top()] - b[pq.top()])) {
            int nb = pq.top();
            del -= (a[nb] - b[nb]);
            now += (a[nb] - b[nb]);
            b[nb] = a[nb];
            pq.pop();
        }

        if(pq.size() && del != 0) 
            b[pq.top()] += del;
        now += del;
        now -= b[t[i]];
        b[t[i]] = 0;

    }

    cout << x[m] + sum - now << "\n";
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0) , cout.tie(0);
    int t; cin >> t;
    while(t --) solve();
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3632kb

input:

2
3 1
3 3 3
8 1
2 2
5 2
1 2
2 1

output:

12
9

result:

ok 2 lines

Test #2:

score: -100
Wrong Answer
time: 0ms
memory: 3844kb

input:

6
3 2
2 2 2
6 1
7 1
2 2
3 3
2 1
6 2
2 3
2 2
5 1
7 2
9 1
2 2
3 3
2 1
6 2
1 1
999999999
1000000000 1
1 1
1000000000
1000000000 1

output:

8
9
4
9
999999999
2000000000

result:

wrong answer 1st lines differ - expected: '9', found: '8'