Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
35263 | LYLAKIOIAKIOI | 【J】T3 | C++ | 通过 | 100 | 795 MS | 21624 KB | 1440 | 2024-12-08 14:14:35 |
#include<bits/stdc++.h> #define veci vector<int> #define jp8 push_back #define sz(a) a.size() using namespace std; const int N=2e5+10; int n;int a[N],to[N],pl[N<<1]; veci c[N],cl[N],ans; queue<int> p; bool pn(int ln,int t[]){ for(int i=1,j=ln;i<=ln;i++,j--) if(t[i]!=t[j]) return 0; return 1; }int tmp[N],tp=0; bool chk(int clr){ tp=0; for(int i=1;i<=n;i++) if(a[i]!=clr) tmp[++tp]=a[i]; return pn(tp,tmp); } void slv(){ cin>>n;int nn=0; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n+1;i++) c[i].clear(),to[i]=0; for(int i=1;i<=n;i++) c[a[i]].jp8(i); for(int i=1;i<=n;i++){ for(int j=0;j<c[i].size();j++){ int SZ=c[i].size(); if(j>SZ-j-1) break; to[c[i][j]]=c[i][SZ-j-1]; to[c[i][SZ-j-1]]=c[i][j]; } }ans.clear(); if(pn(n,a)){ int cnt=0; for(int i=1;i<=n+1;i++) if(sz(c[i])>0) cnt++; cout<<cnt<<endl; for(int i=1;i<=n+1;i++) if(sz(c[i])>0) cout<<i<<' '; cout<<endl; }else{ int l=1; while(1){ if(to[l]!=n-l+1) break;l++; }set<int> f,b;f.clear(),b.clear(); for(int i=l;i<to[n-l+1];i++) f.insert(a[i]); for(int i=to[l]+1;i<=n-l+1;i++) b.insert(a[i]); if(f.size()==1){ if(chk(*f.begin())) ans.jp8(*f.begin()); }if(b.size()==1){ if(chk(*b.begin())) ans.jp8(*b.begin()); } cout<<ans.size()<<endl;sort(ans.begin(),ans.end()); for(auto ed:ans) cout<<ed<<' ';cout<<endl; } } int main(){ int t;cin>>t;while(t--) slv(); }