找不出bug,悬赏关注!!!
查看原帖
找不出bug,悬赏关注!!!
881471
RanHT楼主2023/8/28 15:25
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=5e5+10,mod=1e9+7;
string s,ss,sss;
char cz[N],ff,zz;
ll  x,t,m,a,c,d,k,y,n,o,p,dl[N],down[55],
dp[35][35],dis[1],bj[N],h[205],ne[205],e[205];
int idx;
ll res,ans,num,b,g[1],v[N],w[N],
dx[4]={-1,1,0,0},dy[4]={0,0,-1,1};
typedef pair<ll,ll> pp;
pp da[N];
void add(int a,int b)
{
	e[idx]=b;
	ne[idx]=h[a];
	h[a]=idx++;
}
int main()
{	
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>t;
	while(t--){
		cin>>n>>m>>d;
		for(int i=1;i<=n;i++){
			cin>>w[i];
		}
		for(int i=1;i<=m;i++){
			cin>>v[i];
		}
		idx=1;
		vector<ll>vv;
		for(int i=1;i<=n;i++){
			if(w[i]==v[idx]){
				vv.push_back(i);
				idx++;
			}
		}
		if(vv.size()!=m){
			cout<<0<<'\n';
			continue;
		}
		a=0x3f3f3f3f,b=-0x3f3f3f3f;
		for(int i=0;i<vv.size()-1;i++){
			a=min(a,vv[i+1]-vv[i]);
			b=max(b,vv[i+1]-vv[i]);
		}
		if(b>d){
			cout<<0<<'\n';
			continue;
		}
		for(int i=0;i<vv.size()-1;i++){
			num=0;
			num+=vv[i]-1;
			num+=n-vv[i+1];
			if(num>d-vv[i+1]+vv[i]){
				a=min(a,d-vv[i+1]+vv[i]+1);
			}
		}
		cout<<a<<'\n';
	}
	return 0;	
}

2023/8/28 15:25
加载中...