提交时间:2024-12-11 20:56:32

运行 ID: 35552

#include<bits/stdc++.h> using namespace std; int n,a[200005]; int k[200005]; int clca[200005]; int ansl,ansr; int ca; int cnt; int main(){ int t; cin>>t; while(t--){ scanf("%d",&n); int maxn=0; for(int i = 1;i<=n;i++){ scanf("%d",&a[i]); maxn=max(a[i],maxn); } int l=1,r=n; bool flag =1; while(l<=r){ if(a[l]==a[r]) { l++,r--; } else{ flag =0; ansl=a[l],ansr=a[r]; break; } } if(flag){ for(int i = 1;i<=maxn;i++)k[i]=0; int cnt =0; for(int i = 1;i<=n;i++){ k[a[i]]++; } for(int i = 0;i<=maxn;i++){ if(k[i]>=1){ cnt++; clca[cnt]=i; } } cout<<cnt<<endl; for(int i = 1;i<=cnt;i++){ printf("%d ",clca[i]); } cout<<endl; continue; } ca=2; l=1,r=n; bool fl=1,fr=1; while(l<=r){ if(a[l]==a[r]) { l++,r--; } else{ while(a[l]==ansl){ l++; } while(a[r]==ansl) {r--; } if(a[l]!=a[r]){ fl=0; ca--; break; } } } l=1,r=n; while(l<=r){ if(a[l]==a[r]) { l++,r--; } else{ while(a[l]==ansr){ l++; } while(a[r]==ansr) {r--; } if(a[l]!=a[r]){ fr=0; ca--; break; } } } printf("%d\n",ca); if(ansl>ansr){ swap(ansl,ansr); swap(fl,fr); } if(fl)printf("%d ",ansl); if(fr)printf("%d ",ansr); printf("\n "); } }