QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#684778 | #9528. New Energy Vehicle | luohui468 | WA | 1ms | 5756kb | C++14 | 1.8kb | 2024-10-28 15:49:13 | 2024-10-28 15:49:14 |
Judging History
answer
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
#include<set>
#define int long long
#define endl '\n'
using namespace std;
const int N = 1e5 + 100;
int n, m;
priority_queue<int,vector<int>, greater<int>>p, q;
int a[N], b[N], en[N];
int x[N], y[N];
void solve() {
cin >> n >> m;
int cnum = 0, mcnum = 0;
for(int i = 1; i <= n; i++){
cin >> a[i];
b[i] = a[i];
en[i] = 0;
}
for(int i = 1; i <= m; i++){
cin >> x[i] >> y[i];
en[y[i]] = i;
q.push(i);
}
for(int i = 1; i <= n; i++){
if(en[i]){
cnum += a[i];
}else{
mcnum += a[i];
}
}
x[0] = 0;
int ans = 0;
for(int i = 1; i <= m; i++){
int dis = x[i] - x[i - 1];
if(p.size()){
if(p.top() == i){
q.push(i);
p.pop();
}
}
if(cnum + mcnum < dis){
break;
}
while(q.size()){
int t = q.top();
int t1 = y[t];
if(a[t1] == 0){
p.push(t);
}
if(dis >= a[t1]){
dis -= a[t1];
cnum -= a[t1];
a[t1] = 0;
}
else{
//cout << a[t1] << " " << dis << endl;
a[t1] -= dis;
cnum -= dis;
dis = 0;
break;
}
q.pop();
}
if(q.size() && q.top() == i){
q.pop();
}
//cout << i << ": " << dis << endl;
if(dis){
mcnum -= dis;
}
int t1 = y[i];
if(i == en[y[i]]){
mcnum += b[t1];
//cout << cnum << " " << a[t1] << endl;
cnum -= a[t1];
}
else{
cnum += (b[t1] - a[t1]);
}
//cout << mcnum << " " << cnum << endl;
ans += x[i] - x[i - 1];
a[t1] = b[t1];
//cout << t1 << " " << a[t1] << endl;
}
//cout << mcnum << " " << cnum <<endl;
cout << ans + mcnum + cnum << endl;
}
signed main() {
cin.tie(nullptr) -> sync_with_stdio(false);
int T = 1;
cin >> T;
while(T --) {
solve();
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 5756kb
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: 1ms
memory: 5688kb
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 11 4 9 999999999 2000000000
result:
wrong answer 4th lines differ - expected: '11', found: '9'