模拟赛T1错误代码
//#pragma GCC optimize(2)
#include<bits/stdc++.h>
#define reg register
#define ll long long
#define in inline
using namespace std;
int read(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-1;
ch=getchar();
}
while(isdigit(ch)){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
void write(ll x){
if(x<0){
putchar('-');
x=-x;
}
if(x>9) write(x/10);
putchar(x%10+'0');
return ;
}
const int MAXN=5*1e5+2,INF=1<<30;
int n,q,m;
ll bef_1[MAXN],aft_0[MAXN];
vector<int > a,b,c,sum_b;
bool aim[MAXN];
int main(){
/* freopen("reserve8.in","r",stdin);
freopen("reserve8.out","w",stdout);*/
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
a.push_back(0),b.push_back(0),c.push_back(0),sum_b.push_back(0);
for(reg int i=1;i<=n;i++){
int tmp;
cin>>tmp;
a.push_back(tmp);
}
for(reg int i=1;i<=n;i++){
int tmp;
cin>>tmp;
b.push_back(tmp);
sum_b.push_back(sum_b[i-1]+b[i]);
}
for(reg int i=1;i<=n;i++){
int tmp;
cin>>tmp;
c.push_back(tmp);
}
cin>>q;
while(q--){
cin>>m;
ll now=INF;
bef_1[0]=0,aft_0[n+1]=0;
memset(aim,0,sizeof(aim));
for(reg int i=1;i<=m;i++){
int tmp;
cin>>tmp;
aim[tmp]=1;
}
for(reg int i=1;i<=n;i++){
bef_1[i]=bef_1[i-1]+(aim[i]?1:0)*c[i];
}
for(reg int i=n;i>=1;i--){
aft_0[i]=aft_0[i+1]+(aim[i]?0:1)*b[i];
}
for(reg int i=n;i>=0;i--){
ll tmp=a[i]+bef_1[i]+aft_0[i+1];
if(tmp<now) now=tmp;
}
write(now);
putchar('\n');
}
return 0;
}
用cin交是60,但换成read()就是全WA
是类似于空格导致的吗