#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
const int N=1000010,inf=1000000000;
int n,m,v[N],mx1[N],mx2[N],mn1[N],mn2[N];
long long sum[N];
int main(){
mn1[0]=mn2[0]=inf;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
sort(v+1,v+n+1,greater<int>());
for(int i=1;i<=n;i++){
mn1[i]=mn1[i-1];
mn2[i]=mn2[i-1];
if(v[i]&1)mn1[i]=min(mn1[i],v[i]);
else mn2[i]=min(mn2[i],v[i]);
}
for(int i=n;i;i--){
mx1[i]=mx1[i+1];
mx2[i]=mx2[i+1];
if(v[i]&1)mx1[i]=max(mx1[i],v[i]);
else mx2[i]=max(mx2[i],v[i]);
}
for(int i=1;i<=n;i++)
sum[i]=sum[i-1]+v[i];
scanf("%d",&m);
for(int i=1;i<=m;i++){
int k;scanf("%d",&k);
if(sum[k]&1)printf("%lld\n",sum[k]);
else{
long long ans=-1;
if(mn1[k]!=inf&&mx2[k+1])ans=max(ans,sum[k]-mn1[k]+mx2[k+1]);
if(mn2[k]!=inf&&mx1[k+1])ans=max(ans,sum[k]-mn2[k]+mx1[k+1]);
printf("%lld\n",ans);
}
}
return 0;
}
3721: PA2014 Final Bazarek (贪心)
最新推荐文章于 2020-05-12 17:10:39 发布