QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#683683#9528. New Energy VehiclewyssssWA 0ms3644kbC++171.8kb2024-10-27 22:44:442024-10-27 22:44:45

Judging History

This is the latest submission verdict.

  • [2024-10-27 22:44:45]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 3644kb
  • [2024-10-27 22:44:44]
  • Submitted

answer

#include <iostream>
#include <algorithm>
#include <set>
#include <queue>
#include <vector>
#include <cstring>
#include <numeric>
#include <cmath>
#include <list>
#include <stack>
#include <map>
#include <unordered_map>
#include <string>
#define int long long
#define ll long long
#define pii pair<int,int>
#define piii pair<pii,int>
using namespace std;
const int inf = (1ll << 60) - 1 + (1ll << 60);
const int maxn = 2e5 + 5;
const int maxm = 2e5 + 5;
int dx[] = { 0,0,1,-1 }, dy[] = { 1,-1,0,0 };



void solve() {
    int n, m;
    cin >> n >> m;
    int sum = 0;
    vector<int> a(n + 1), las(n + 1);
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        sum += a[i];
    }
    vector<int> p(m + 1), t(m + 1);
    for (int i = 1; i <= m; i++) {
        cin >> p[i] >> t[i];
    }
    map<int, int> mp;
    set<int> st;
    for (int i = 1; i <= m; i++) {
        int need = p[i] - p[i - 1];
        if (sum < need) {
            cout << p[i - 1] + sum << "\n";
            return;
        }
        else {
            sum -= need;
            st.insert(i);
            mp[i] = need;
        }
        auto it = st.upper_bound(las[t[i]]);
        int x = 0;
        while (it != st.end()) {
            x += mp[*it];
            int y = *it;
            it++;
            st.erase(y);
            if (x >= a[t[i]]) {
                if (x > a[t[i]]) {
                    mp[y] = x - a[t[i]];
                    x = a[t[i]];
                    st.insert(y);
                }
                break;
            }
        }
        sum += x;
    }
    cout << p[m] + sum << "\n";
}

signed main() {
    ios::sync_with_stdio(0), cin.tie(0);
    int T = 1;
    cin >> T;
    while (T--) {
        solve();
    }
    return 0;
}

详细

Test #1:

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

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: 3644kb

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:

10
11
4
11
999999999
2000000000

result:

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