求助大神!这个代码怎么没有输出?!
查看原帖
求助大神!这个代码怎么没有输出?!
677514
Frodo楼主2022/5/26 21:08

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=200001;
int T,n,a[N],ans[N];
struct node
{
 int k;
 node *last,*next;
}f[N],*sta,*end;
int read()
{
 int ret=0;
 char ch=getchar();
 while(ch<'0'||ch>'9') ch=getchar();
 while(ch>='0'&&ch<='9'){ret=ret*10+(int)(ch-48);ch=getchar();}
 return ret;
}
int main()
{
 T=read();
 while(T--)
 {
  n=read();
  for(int i=1;i<=n;i++) a[i]=read();
  sta=end=&f[1];
  for(int i=1;i<=n;i++)
  {
   if(a[i]!=a[i-1])
   {
    ans[i]=a[i];
    for(int j=a[i-1]+1;j<a[i];j++)
    {
     f[j].k=j;
     f[j].last=end;
     (*end).next=&f[j];
     end=&f[j];
	}
   }
   else{ans[i]=(*sta).k;sta=(*sta).next;}
  }
  for(int i=1;i<n;i++) printf("%d%s",ans[i]," ");
  printf("%d\n",ans[n]);
  sta=end=&f[1];
  for(int i=1;i<=n;i++)
  {
   if(a[i]!=a[i-1])
   {
    ans[i]=a[i];
    for(int j=a[i-1]+1;j<a[i];j++)
    {
     f[j].k=j;
     f[j].last=end;
     (*end).next=&f[j];
     end=&f[j];
	}
   }
   else{ans[i]=(*end).k;end=(*end).last;}
  }
  for(int i=1;i<n;i++) printf("%d%s",ans[i]," ");
  printf("%d\n",ans[n]);
 }
 return 0;
}
2022/5/26 21:08
加载中...