codeforce .Restoring the Permutation 1500
这一题感觉很简单,可能是我水平变高了,也可能是这题运气好遇上简单的了,唯一需要注意的是在后面输入的数据中心要注意超时的坑(因为会有超级极端的数据出现,别问我怎么知道的,我可没有白白TLE两遍)
上代码!
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=2e5+5;
int q[N],p[N],fix[N];
int t,n;
int main()
{
ios::sync_with_stdio(false);
cin>>t;
while (t--)
{
memset(q,0,sizeof(q));
memset(p,0,sizeof(p));
memset(fix,0,sizeof(fix));
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>q[i];
if(i==1||q[i]!=q[i-1])
{
p[i]=q[i];
fix[p[i]]=1;
}
}
int j=1;
for (int i=1;i<=n;i++)
{
if(p[i])cout<<p[i]<<" ";
else
{
while (fix[j]) j++;
cout<<j<<" ";
j++;
}
}
cout<<endl;
int j1=0;
for (int i=1;i<=n;i++)
{
if(i==1||q[i]>q[i-1]+1)j1=q[i];
if(p[i])cout<<p[i]<<" ";
else
{
while (fix[j1])j1--;
fix[j1]=1;
cout<<j1<<" ";
}
}
cout<<endl;
}
return 0;
}