Wa求调,#2第254th答案错误,评论区的Wa全调过了,还是Wa
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=3e5+5;
struct node{
int a,d,l,r,f;
}mon[maxn];
int t,n,b[maxn];
void solve(){
cin>>n;
queue <int> Q,q,v;mon[n+1]={0,0,0,0,0};
for(int i=1,a;i<=n;i++){
cin>>a;Q.push(i);
mon[i]={a,0,i-1,i+1,1};
}for(int i=1,d;i<=n;i++){
cin>>d;mon[i].d=d;
}for(int i=1;i<=n;i++){
int cnt=0;
while(!Q.empty()){
int u=Q.front();Q.pop();
if(mon[u].d<mon[mon[u].l].a+mon[mon[u].r].a){
cnt++;mon[u].f=0;q.push(u);
}
}while(!q.empty()){
int u=q.front();q.pop();b[u]=0;
int lef=mon[u].l,rig=mon[u].r;
mon[u].l=lef;mon[u].r=rig;
if(lef>=1&&lef<=n&&!b[lef]&&mon[lef].f){
b[lef]=1;v.push(lef);
}if(rig>=1&&rig<=n&&!b[rig]&&mon[rig].f){
b[rig]=1;v.push(rig);
}
}while(!v.empty()){
int u=v.front();v.pop();
int lef=mon[u].l,rig=mon[u].r;
while(lef>=1&&lef<=n&&!mon[lef].f) lef=mon[lef].l;
while(rig>=1&&rig<=n&&!mon[rig].f) rig=mon[rig].r;
Q.push(u);mon[u].l=lef;mon[u].r=rig;
}cout<<cnt<<' ';
}cout<<'\n';
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>t;
while(t--) solve();
return 0;
}