#include<bits/stdc++.h>
using namespace std;
int a[1005],b[1005];
struct cmp{
bool operator()(int x,int y)
{
return x<y;
}
};
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(int i=0;i<n-1;i++){
scanf("%d",&b[i]);
}
priority_queue<int,vector<int>,cmp> q;
int num=0;
int geshu=0;
int flag=0;
for(int i=0;i<n-1;i++){
q.push(a[i]);
if(num<b[i]){
if(geshu<3){
geshu++;
num+=q.top();
q.pop();
if(num<b[i]){
flag=1;
break;
}
num-=b[i];
}
else{
flag=1;
break;
}
}
else{
num-=b[i];
}
}
q.push(a[n-1]);
if(geshu!=3&&!flag){
while(geshu!=3){
num+=q.top();
q.pop();
geshu++;
}
}
if(flag){
printf("-1\n");
}
else{
printf("%d\n",num);
}
}
补补补! 优先队列加贪心
猜你喜欢
转载自blog.csdn.net/wrf20162305/article/details/80314658
今日推荐
周排行