Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define ll long long int
- using namespace std;
- map<int,int>mp1,mp2,pp1,pp2,ch;
- int main()
- {
- int t;
- cin>>t;
- while(t--)
- {
- int n,i,mx=-1,l1max=-1,l2max=-1,r1max=-1,r2max=-1;
- int loc1=-1,loc2=-1,cnt=0,cnt1=0,cnt2=0;
- vector<int>ans;
- cin>>n;
- int ar[n];
- mp1.clear(); pp1.clear(); mp2.clear(), pp2.clear(),ch.clear();
- bool f=true,f1=true,f2=true,no=true;
- for(i=0;i<n;i++)
- {
- cin>>ar[i];
- if(mp1[ar[i]]==0 && cnt==0)
- {
- // left1.push_back(ar[i]);
- l1max=max(l1max,ar[i]);
- loc1=i;
- mp1[ar[i]]++;
- }
- else
- {
- // left2.push_back(ar[i]);
- cnt++;
- l2max=max(l2max,ar[i]);
- mp2[ar[i]]++;
- }
- ch[ar[i]]++;
- if(ch[ar[i]]==3)
- {
- no=false;
- }
- }
- cnt=0;
- for(i=n-1;i>=0;i--)
- {
- if(pp1[ar[i]]==0 && cnt==0)
- {
- //right1.push_back(ar[i]);
- r1max=max(r1max,ar[i]);
- loc2=i;
- pp1[ar[i]]++;
- }
- else
- {
- // right2.push_back(ar[i]);
- cnt++;
- r2max=max(r2max,ar[i]);
- pp2[ar[i]]++;
- }
- }
- cnt=0;
- // if(left1.size()+left2.size()!=n) f=false;
- // else f=true;
- if(no)
- {
- for(i=1;i<=l1max;i++)
- {
- if(mp1[i]==0 || mp1[i]>=2)
- {
- f1=false;
- break;
- }
- }
- for(i=1;i<=l2max;i++)
- {
- if(mp2[i]==0 || mp2[i]>=2)
- {
- f2=false;
- break;
- }
- }
- if(f1 && f2)
- {
- cnt1++;
- ans.push_back(loc1+1);
- ans.push_back(n-(loc1+1));
- }
- f1=true; f2=true;
- for(i=1;i<=r1max;i++)
- {
- if(pp1[i]==0 || pp1[i]>=2)
- {
- f1=false;
- break;
- }
- }
- for(i=1;i<=r2max;i++)
- {
- if(pp2[i]==0 || pp2[i]>=2)
- {
- f2=false;
- break;
- }
- }
- if(f1 && f2)
- {
- cnt2++;
- ans.push_back(loc2);
- ans.push_back(n-(loc2));
- }
- if(cnt1==1 && cnt2==0)
- {
- cout<<cnt1<<endl;
- cout<<ans[0]<<' '<<ans[1]<<endl;
- }
- else if(cnt2==1 && cnt1==0)
- {
- cout<<cnt2<<endl;
- cout<<ans[0]<<' '<<ans[1]<<endl;
- }
- else if(cnt2==1 && cnt1==1)
- {
- if(ans[0]!=ans[2] && ans[1]!=ans[3]){
- cout<<cnt2+cnt1<<endl;
- cout<<ans[0]<<' '<<ans[1]<<endl;
- cout<<ans[2]<<' '<<ans[3]<<endl;
- }
- else
- {
- cout<<cnt1<<endl;
- cout<<ans[0]<<' '<<ans[1]<<endl;
- }
- }
- else cout<<0<<endl;
- }
- else
- {
- cout<<0<<endl;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement