请问为什么我写的程序(用的是纯递推法)第二点会报WA,哪位大佬能帮我看一下吗,谢谢,有没有用c++写的正解
#include<bits/stdc++.h>
using namespace std;
int main()
{
int l[200005],x[100005];
int t,n,m;
cin>>t;
for(int i=1;i<=t;i++)
{
for(int j=0;j<=200000;j++)
{
l[j]=0;
}
scanf("%d%d",&n,&m);
for(int j=1;j<=n;j++)
{
scanf("%d",&x[j]);
if(x[j]<=200000)
{
l[x[j]]++;
}
}
int kk;
for(int j=0;j<=200000;j++)
{
if(l[j]==0)
{
kk=j;
if(m%2==1)
{
for(int k=1;k<=n;k++)
{
if(x[k]<kk)
{
printf("%d ",x[k]);
}
else
{
printf("%d ",kk);
}
}
}
else
{
for(int k=1;k<=n;k++)
{
if(x[k]<kk)
{
printf("%d ",x[k]);
}
else
{
printf("%d ",kk+1);
}
}
}
break;
}
else if(l[j]>=2)
{
kk=j;
if(m>=2)
{
if(m%2==1)
{
for(int k=1;k<=n;k++)
{
if(x[k]<kk)
{
printf("%d ",x[k]);
}
else
{
printf("%d ",kk+1);
}
}
}
else
{
for(int k=1;k<=n;k++)
{
if(x[k]<=kk)
{
printf("%d ",x[k]);
}
else
{
printf("%d ",kk);
}
}
}
}
else
{
int mn;
for(int xx=1;xx<=200000;xx++)
{
if(l[xx]==0)
{
mn=xx;
break;
}
}
for(int k=1;k<=n;k++)
{
if(x[k]<kk)
{
printf("%d ",x[k]);
}
else
{
if(x[k]<mn&&l[x[k]]==1)
{
printf("%d ",x[k]);
}
else
{
printf("%d ",mn);
}
}
}
}
break;
}
}
cout<<endl;
}
return 0;
}