QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#744352 | #9528. New Energy Vehicle | Andy | WA | 1ms | 8676kb | C++14 | 1.4kb | 2024-11-13 21:37:52 | 2024-11-13 21:37:53 |
Judging History
answer
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
void solve();
int main(){
ios::sync_with_stdio(false);
int T=1;
cin>>T;
while(T--){
solve();
}
return 0;
}
#define int long long
const int N=1e5+5,M=1e5+5;
int n,m,a[N],b[N];
int x[M],t[M];
set<int> s;//依次考虑使用set中对应充电桩充电的电池
vector<int> vec[N];//给电池i充电的充电桩集合
void solve(){
cin>>n>>m;
ll E=0;
s.clear();
for(int i=1;i<=n;i++) vec[i].clear();
for(int i=1;i<=n;i++){
cin>>a[i];
b[i]=a[i];
E+=a[i];
}
for(int i=1;i<=m;i++){
cin>>x[i]>>t[i];
vec[t[i]].push_back(i);
s.insert(i);
}
x[0]=0;
for(int i=1;i<=m;i++){
ll d=x[i]-x[i-1],now=0;
while(!s.empty() && now<d){//考虑i-1=>i充电桩的路上用哪些电池
int id=*s.begin(),c=t[id];
if(b[c]){
ll v=min(b[c],d-now);
now+=v,b[c]-=v;
}
if(!b[c]) s.erase(s.begin());
}
E+=a[t[i]]-b[t[i]];
// cout<<"E: "<<E<<endl;
b[t[i]]=a[t[i]];//充满电
for(int id : vec[t[i]]){
if(id>i){
s.insert(id);
break;
}
}
while(!s.empty() && *s.begin()<=i) s.erase(s.begin());
}
cout<<E<<endl;
return ;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 7152kb
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: 8676kb
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 10 11 1999999998 2000000000
result:
wrong answer 3rd lines differ - expected: '4', found: '10'