本文共 1749 字,大约阅读时间需要 5 分钟。
ac代码:
#include#include #include using namespace std;const int maxn=2e5+7;int a[maxn]={ };bool b[maxn]={ };int mx,n,l1,l2;bool jg1(){ memset(b,0,sizeof b); for(int i=1;i<=l1;i++) { b[a[i]]=1; } for(int i=1;i<=l1;i++) { if(b[i]==0) return 0; } memset(b,0,sizeof b); for(int i=l1+1;i<=n;i++) { b[a[i]]=1; } for(int i=1;i<=l2;i++) { if(b[i]==0) return 0; } return 1;}bool jg2(){ memset(b,0,sizeof b); for(int i=1;i<=l2;i++) { b[a[i]]=1; } for(int i=1;i<=l2;i++) { if(b[i]==0) return 0; } memset(b,0,sizeof b); for(int i=l2+1;i<=n;i++) { b[a[i]]=1; } for(int i=1;i<=l1;i++) { if(b[i]==0) return 0; } return 1;}int main(){ ios::sync_with_stdio(false); int t; cin>>t; while(t--) { cin>>n; memset(a,0,sizeof a); mx=0; for(int i=1;i<=n;i++) { cin>>a[i]; mx=max(mx,a[i]); } l1=mx,l2=n-mx; bool f1=jg1(),f2=jg2(); if(l1<=0||l2<=0) { cout<<"0\n"; } else if(f1&&f2) { if(mx*2!=n) { cout<<"2\n"; cout< <<" "< <<"\n"; cout< <<" "< <<"\n"; } else { cout<<"1\n"; cout< <<" "< <<"\n"; } } else if(f1&&f2==0) { cout<<"1\n"; cout< <<" "< <<"\n";// cout< <<" "< <<"\n"; } else if(f1==0&&f2) { cout<<"1\n";// cout< <<" "< <<"\n"; cout< <<" "< <<"\n"; } else { cout<<"0\n"; } }}
转载地址:http://evrq.baihongyu.com/