WA on 11求调
查看原帖
WA on 11求调
252549
Iwara楼主2024/3/30 09:25

RT

#include<bits/stdc++.h>
#include<map> 
using namespace std;
typedef long long ll;
#define int long long
const ll MAXN=1e6+5;
ll n,q,N,_;
ll a[MAXN],b[MAXN],b_sz;
ll lowbit(ll num){
	return num&-num;
}
struct seg{
	ll l,r,len,tp;
}s[MAXN];
ll reg_rk;
struct sgm_t{
	ll rt[MAXN],lson[MAXN<<2],rson[MAXN<<2],sum[MAXN<<2],tot;
	void push_up(ll id){
		if(!id)return;
		sum[id]=sum[lson[id]]+sum[rson[id]];
		return;
	}
	void add(ll &id,ll L,ll R,ll k,ll delta){
		if(!id)id=++tot;
		if(L==R){
			sum[id]+=delta;
			return;
		}
		ll mid=(L+R)>>1;
		if(k<=mid)add(lson[id],L,mid,k,delta);
		else add(rson[id],mid+1,R,k,delta);
		push_up(id);
		return;
	}
	ll query(ll id1,ll id2,ll L,ll R,ll k){
		if(L==R)return R;
		ll res_sum=sum[lson[id1]]+sum[lson[id2]];
		ll mid=(L+R)>>1;
		if(res_sum>=k)return query(lson[id1],lson[id2],L,mid,k);
		return query(rson[id1],rson[id2],mid+1,R,k-res_sum);
	}
}S; 
inline ll rd() {
    ll s=0,m=0;char ch=getchar();
    while(!isdigit(ch)) {if(ch=='-')m=1;ch=getchar();}
    while( isdigit(ch)) s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
    return m?-s:s;
}
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	_=rd();
	while(_--){
		n=rd(),q=rd();
		N=0;
		S.tot=0;
		for(int i=1;i<=n;i++){
			s[i].len=rd();
			s[i].l=s[i-1].r+1;
			s[i].r=s[i].l+s[i].len-1;
			for(int j=s[i].l;j<=s[i].r;j++)a[j]=rd();
			N+=s[i].len;
			S.rt[i]=0;
		}
		for(int i=1;i<=N;i++)b[i]=a[i];
		sort(b+1,b+1+N);
		b_sz=unique(b+1,b+1+N)-b-1;
		for(int i=1;i<=N;i++)a[i]=lower_bound(b+1,b+1+b_sz,a[i])-b;
//		for(int i=1;i<=N;i++)cout<<a[i]<<' ';
//		cout<<'\n';
//		for(int i=1;i<=N;i++)cout<<b[a[i]]<<' ';
//		cout<<'\n';
		for(int i=1;i<=n;i++)for(int j=s[i].l;j<=s[i].r;j++)S.add(S.rt[i],1,b_sz,a[j],1);
		for(int i=1,x=0,y=0;i<=q;i++){
			x=rd(),y=rd();
			reg_rk=s[x].len+s[y].len;
			reg_rk=((reg_rk-1)>>1)+1;
//			cout<<"rk: "<<reg_rk<<endl;
			cout<<b[S.query(S.rt[x],S.rt[y],1,b_sz,reg_rk)]<<'\n';
//			cout<<b[S.query(S.rt[x],S.rt[y],1,b_sz,s[x].len+s[y].len)]<<'\n';
		} 
	}
	return 0;
} 
2024/3/30 09:25
加载中...