QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#749268 | #9528. New Energy Vehicle | Dung1604 | WA | 2ms | 11624kb | C++17 | 2.4kb | 2024-11-14 23:16:07 | 2024-11-14 23:16:07 |
Judging History
answer
#include <iostream>
#include <vector>
#include <queue>
#define ll long long
#define int long long
#define inf 100000000
#define mod 998244353
using namespace std;
ll a[200005];
ll b[200005];
ll last[200005];
vector<vector<ll>> Time(200005);
void solve(){
int n, m;
cin >>n >> m;
vector<pair<ll, ll>> recharge(m + 1);
ll sum = 0;
for(int i = 1; i <= n; i++){
Time[i].clear();
cin >> a[i];
sum += a[i];
b[i] = a[i];
}
priority_queue<pair<ll, ll>, vector<pair<ll, ll>> , greater<pair<ll, ll>> > pq;
for(int i = 1; i <= m; i++){
cin >> recharge[i].first>> recharge[i].second;
Time[recharge[i].second].push_back(i);
if(Time[recharge[i].second].size() == 1){
pq.push({i, 0});
}
}
for(int i = 1; i <= n; i++){
if(Time[i].size() > 0 ){
sum -= a[i];
}
else{
}
}
int cur = 0;
for(int i = 1; i <=m ; i++){
int s = recharge[i].first - cur;
int id = pq.top().second;
while(!pq.empty()){
int idx = pq.top().first;
int nxt = pq.top().second;
int pos = recharge[idx].second;
pq.pop();
if(s < b[pos]){
b[pos] -= s;
s = 0;
if(idx != i){
pq.push({idx, nxt});
}
break;
}
else{
s -= b[pos];
b[pos] = 0;
}
}
if(s > 0){
if(sum >= s){
sum -= s;
}
else{
cur += sum;
sum = 0;
break;
}
}
cur = recharge[i].first;
if(Time[recharge[i].second].size() -1 == id){
sum += a[recharge[i].second];
}
else{
pq.push({Time[recharge[i].second][id+ 1], id + 1});
b[recharge[i].second] = a[recharge[i].second];
}
}
cout << cur + sum << endl;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int t;
cin >> t;
while(t--){
solve();
}
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 11624kb
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: 2ms
memory: 9552kb
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 0 11 0 2000000000
result:
wrong answer 3rd lines differ - expected: '4', found: '0'