该程序末尾输出如果使用printf 最后一组数据会wa,但是cout不会
#include<bits/stdc++.h>
using namespace std;
long long int n,a[500005],b[500005],c[500005],p[500005],q,m,a0,a1,t,tt,s1,sb[500005]; //0表示前s个可以被覆盖,1表示不可以(任意时刻0可以转换为1反之不行)
int main(){
cin>>n;
for(int i=1;i<=n;i++)scanf("%d",&a[i]);//cin>>a[i];
for(int i=1;i<=n;i++)scanf("%d",&b[i]);//cin>>b[i];
for(int i=1;i<=n;i++)scanf("%d",&c[i]);//cin>>c[i];
for(int i=1;i<=n;i++){
a[i]=min(a[i-1]+b[i],a[i]);
sb[i]=sb[i-1]+b[i];
}
cin>>q;
while(q--){
scanf("%d",&m);//cin>>m;
a0=0;a1=0;s1=0;
for(int i=1;i<=m;i++){
scanf("%d",&p[i]);//cin>>p[i];
}
for(int i=1;i<=m;i++){
a1=min(a[p[i]-1]+s1,a1+(sb[p[i]-1]-sb[p[i-1]]));
s1+=c[p[i]];
}
a0=a[n]+s1;
a1=a1+(sb[n]-sb[p[m]]);
cout<<min(a1,a0)<<endl;
//printf("%d\n",min(a1,a0));
}
return 0;
}