QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#681323 | #9528. New Energy Vehicle | ucup-team5141# | WA | 0ms | 3616kb | C++23 | 1.9kb | 2024-10-27 05:10:48 | 2024-10-27 05:10:49 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define ff first
#define ss second
#define ld long double
using namespace std;
int main(){
#ifdef LOCAL
freopen("in.txt", "r", stdin);
#endif
ios::sync_with_stdio(NULL);
cin.tie(0);
cout.tie(0);
int tt; cin >> tt;
while (tt--) {
int n, m; cin >> n >> m;
vector<int> a(n), d(m+1), b(m+1);
vector<vector<int>> c(n, vector<int>());
for (int i=0; i<n; ++i) cin >> a[i];
vector<int> charge = a;
for (int i=1; i<=m; ++i) {
cin >> d[i] >> b[i];
b[i]--;
c[b[i]].pb(i);
}
for (int i=0; i<n; ++i) reverse(c[i].begin(), c[i].end());
set<pair<int, int>> s;
for (int i=0; i<n; ++i) {
int p = c[i].size() ? c[i].back() : m;
s.insert({p, i});
}
ll ans = 0;
for (int i=1; i<=m; ++i) {
int rem = d[i] - d[i-1];
while (s.size() && rem) {
pair<int, int> cur = *s.begin();
s.erase(s.begin());
//cout << cur.ss << ' ' << rem << ' ' << charge[cur.ss] << endl;
int mn = min(charge[cur.ss], rem);
rem -= mn;
charge[cur.ss] -= mn;
ans += mn;
if (charge[cur.ss]) s.insert(cur);
}
if (rem) break;
if (s.count({i, b[i]})) s.erase({i, b[i]});
c[b[i]].pop_back();
charge[b[i]] = a[b[i]];
if (c[b[i]].size()) s.insert({c[b[i]].back(), b[i]});
else s.insert({m, b[i]});
}
while (s.size()) {
ans += charge[s.begin()->ss];
s.erase(s.begin());
}
cout << ans << '\n';
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3616kb
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: 3472kb
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:
9 9 4 9 999999999 2000000000
result:
wrong answer 2nd lines differ - expected: '11', found: '9'