向大佬求助我这垃圾代码错在哪里
//#include<bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <stack>
#define inf 9999999
using namespace std;
long long pplus[100000+100],ssub[100000+100];
long long a[100000+100],b[100000+100];
//pplus是储存第i位置之前有多少个1, ssub是储存第i位置之前有多少个-1;
int main(){
int t;
cin>>t;
while(t--){
int n;
cin >>n;
for(int i=0;i<n;i++){
cin >>a[i];
if(a[i]==1)
pplus[i+1]+=1;
if(a[i]==-1)
ssub[i+1]+=1;
if(i>0){
ssub[i] += ssub[i-1];
pplus[i] += pplus[i-1];
}
//对于a[i]位置的1与-1的数量是a[i-1]位置加上a[i-1]位置处之前的数量
}
for(int i=0;i<n;i++)
printf("%d ",pplus[i]);
printf("\n");
int f=1;
for(int i=0;i<n;i++){
cin >>b[i];
if( b[i]<a[i] && ssub[i]==0 ) f=0;
if( b[i]>a[i] && pplus[i]==0 ) f=0;
}
if(f) printf("YES\n");
else printf("NO\n");
for(int i=0;i<n;i++){
pplus[i]=0;
ssub[i]=0;
}
}
return 0;
}