题解
2025-09-08 20:25:20
发布于:广东
5阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
long long n,x,s[200050],b[200050];
int main(){
cin >> n >> x;
for(int i = 1;i <= n;i++){
cin >> s[i];
s[i] += s[i - 1];
}
for(int i = 1;i <= n;i++){
cin >> b[i];
}
while(x--){
long long k,ans,f = 0;
cin >> k;
priority_queue<int> q;
for(int i = 1;i <= k;i++){
f += b[i];
q.push(b[i]);
}
ans = s[k] + f;
for(int i = k + 1;i <= n;i++){
if(b[i] < q.top()){
f += b[i] - q.top();
q.pop();
q.push(b[i]);
}
ans = min(ans,f + s[i]);
}
cout << ans << endl;
}
return 0;
}
这里空空如也
有帮助,赞一个