Untitled

 avatar
unknown
plain_text
18 days ago
3.0 kB
4
Indexable
#include <bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
//using namespace __gnu_pbds;
using namespace std;
//#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define fastio ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define printclock cerr<<"Time : "<<1000*(ld)clock()/(ld)CLOCKS_PER_SEC<<"ms\n";
//**************************////**************************//
#define pb push_back
#define fill(v,val) memset(v,val,sizeof(v))
#define ll  long long
#define ld  long double
#define ff  first
#define ss  second
#define pll pair<ll,ll>
#define pii pair<int,int>
#define sq(v) ((v)*(v))
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
#define print(v) cout<<v<<"\n"
#define printv(v) for(auto &vv:v){cout<<vv<<" ";}cout<<"\n"
#define input(v) for(auto &vv:v){cin>>vv;}
#define cntsetbits(v) _builtin_popcount(v)
#define ctz(v) __builtin_ctz(v)
//**************************////**************************//
const ll MOD = 1000*1000*1000+7;
const ll INF = 1ll*1000*1000*1000*1000*1000*1000 + 7;
const ld PI = 3.141592653589793;
//**************************////**************************//
ll gcd(ll a,ll b){if(!b)return a;return gcd(b,a%b);} 
ll lcm(ll a,ll b){return (a*b)/gcd(a,b);}
ll binexp(ll a,ll b){if(!b)return 1;ll res=binexp(a,b/2);res=(res*res);if(b&1)res=(a*res);return res;}
ll binexpmod(ll x,ll y,ll p){ll res=1;x%=p;while(y>0){if(y&1)res=(res*x)%p;y=y>>1;x=(x*x)%p;}return res;}
vector<bool> soe(ll num) {vector<bool>pno(num,1);pno[0]=pno[1]=false;
        for(int i=2;i*i<=num;i++){if(pno[i]){for(int j=i*i;j<=num;j+=i)pno[j]=0;}}return pno;}
ll chash(string s){ll p=31,m=1e9+9;ll hv=0,p_pow=1;
        for(char c:s){hv=(hv+(c-'a'+1)*p_pow)%m;p_pow=(p_pow*p)%m;}return hv;}
int smallestDivisor(int n){if(n%2==0)return 2;for(int i=3;i*i<=n;i+=2)if(n%i==0)return i;return n;}
int nopf(int n){int ans=0;while (n!=1){ans++;int sm=smallestDivisor(n);n/=sm;}return ans;}
void solve()
{
    int n;
    cin>>n;
    vector<int> a(n);
    input(a);

    int mn=n+1, mx=-1, i=0;
    while(i<n)
    {
        int cnt=1;
        while(i+1<n && a[i]==a[i+1])
        {
            i++;
            cnt++;
        }

        if(cnt==1)
        {
            i++;
            continue;
        }

        mn=min(mn, i-cnt+1);
        mx=max(mx, i);
        i=i+1;
    }

    int ans;
    if(mx-mn<=1)
        ans=0;
    else if(mx-mn==2)
        ans=1;
    else
        ans=mx-mn-2;
    print(ans);
}
signed main()
{
    cout<<fixed<<setprecision(10);
    fastio;
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif
    int t=1;
    cin>>t;
    for(int i=1;i<=t;i++)
        solve();
    #ifndef ONLINE_JUDGE
    printclock;
    #endif
}
Leave a Comment