結果

問題 No.1053 ゲーミング棒
ユーザー ChunenChunen
提出日時 2020-08-06 18:59:51
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 50 ms / 2,000 ms
コード長 3,324 bytes
コンパイル時間 1,826 ms
コンパイル使用メモリ 181,276 KB
実行使用メモリ 9,608 KB
最終ジャッジ日時 2023-10-21 16:37:26
合計ジャッジ時間 4,060 ms
ジャッジサーバーID
(参考情報)
judge12 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
4,348 KB
testcase_01 AC 2 ms
4,348 KB
testcase_02 AC 2 ms
4,348 KB
testcase_03 AC 2 ms
4,348 KB
testcase_04 AC 2 ms
4,348 KB
testcase_05 AC 2 ms
4,348 KB
testcase_06 AC 2 ms
4,348 KB
testcase_07 AC 2 ms
4,348 KB
testcase_08 AC 2 ms
4,348 KB
testcase_09 AC 2 ms
4,348 KB
testcase_10 AC 2 ms
4,348 KB
testcase_11 AC 2 ms
4,348 KB
testcase_12 AC 2 ms
4,348 KB
testcase_13 AC 2 ms
4,348 KB
testcase_14 AC 1 ms
4,348 KB
testcase_15 AC 2 ms
4,348 KB
testcase_16 AC 2 ms
4,348 KB
testcase_17 AC 2 ms
4,348 KB
testcase_18 AC 2 ms
4,348 KB
testcase_19 AC 2 ms
4,348 KB
testcase_20 AC 2 ms
4,348 KB
testcase_21 AC 2 ms
4,348 KB
testcase_22 AC 2 ms
4,348 KB
testcase_23 AC 43 ms
9,608 KB
testcase_24 AC 50 ms
9,608 KB
testcase_25 AC 50 ms
9,608 KB
testcase_26 AC 49 ms
9,608 KB
testcase_27 AC 2 ms
4,348 KB
testcase_28 AC 1 ms
4,348 KB
testcase_29 AC 2 ms
4,348 KB
testcase_30 AC 19 ms
4,868 KB
testcase_31 AC 18 ms
4,868 KB
testcase_32 AC 19 ms
4,868 KB
testcase_33 AC 19 ms
4,868 KB
testcase_34 AC 18 ms
4,868 KB
testcase_35 AC 24 ms
4,868 KB
testcase_36 AC 25 ms
4,868 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>

using namespace std;

using ll = long long;

const long long MOD = 1e9+7;

#define ALL(A) A.begin(),A.end()

void ALLIN1_NUMBER(vector<ll>& V)
{
    for(auto& x : V)
    {
        cin >> x;
    }
}

void ALLOUT_NUMBER(vector<ll> V)
{
    ll N = V.size();
    for(ll i=0;i<N;i++)
    {
        cout << V[i];
        if(i<N-1) cout << ' ';
    }
    cout << endl;
}


class Mll
{
    public:
    ll x;

    Mll() : x(0){}
    Mll(ll x=0) : x((x%MOD+MOD)%MOD){}

    Mll operator-() const
    {
        return Mll(-x);
    }

    Mll& operator+=(const Mll& A)
    {
        if((x += A.x) >= MOD) x -= MOD;
        return *this;
    }
    Mll& operator-=(const Mll& A)
    {
        if((x += MOD - A.x) >= MOD) x -= MOD;
        return *this;
    }
    Mll& operator*=(const Mll& A)
    {
        (x *= A.x) %= MOD;
        return *this;
    }
    
    Mll operator+(const Mll& A)
    {
        Mll res(*this);
        return res+=A;
    }
    Mll operator-(const Mll& A)
    {
        Mll res(*this);
        return res-=A;
    }
    Mll operator*(const Mll& A)
    {
        Mll res(*this);
        return res*=A;
    }
    
    Mll pow(ll t) const // t乗
    {
        if(t==0) return 1;
        Mll A = pow(t>>1);
        A *= A;
        if(t&1) A *= *this;
        return A;
    }

    // for prime mod
    Mll inv() const
    {
        return pow(MOD-2);
    }
    Mll& operator/=(const Mll& A)
    {
        return (*this) *= A.inv();
    }
    Mll operator/(const Mll& A) const
    {
        Mll res(*this);
        return res/=A;
    }

    friend ostream& operator<<(ostream& os, const Mll& M)
    {
        os << M.x;
        return os;
    }
};

vector<Mll> ALLIN_MLL(ll N)
{
    vector<ll> numbers_ll(N);
    ALLIN1_NUMBER(numbers_ll);

    vector<Mll> numbers_Mll;
    for(ll i=0;i<N;i++)
    {
        Mll add(numbers_ll[i]);
        numbers_Mll.push_back(add);
    }

    return numbers_Mll;
}

class UnionFind
{
    public:
    vector<ll> par;

    UnionFind(ll n) : par(n)
    {
        for(ll i=0;i<n;i++)
        {
            par[i] = i;
        }
    }

    ll root(ll n)
    {
        if(par[n]==n) return n;
        return par[n] = root(par[n]);
    }

    void unite(ll x, ll y)
    {
        ll rx = root(x), ry = root(y);
        if(rx == ry) return;
        par[rx] = ry;
    }

    bool same(ll x, ll y)
    {
        ll rx = root(x), ry = root(y);
        return (rx == ry);
    }
};



template<class T>
void OUT0(T N)
{
    cout << N << endl;
}

static const double pi = acos(-1.0);

double Cos(double D)
{
    return cos(pi/180 * D);
}

vector<ll> RUI(ll N, vector<ll> IN)
{
    vector<ll> ret(N+1);
    ret[0] = 0;
    for(ll i=1;i<=N;i++)
    {
        ret[i] = ret[i-1] + IN[i-1];
    }
    return ret;
}

int main()
{
    ll N;
    cin >> N;

    vector<ll> A(N);
    ALLIN1_NUMBER(A);

    auto f = [A]()
    {
        unordered_map<ll,ll> counter;
        for(auto x : A)
        {
            counter[x]++;
        }
        return counter.size();
    };

    ll F = f();

    ll changing = 0;
    for(ll i=0;i<N-1;i++)
    {
        if(A[i]!=A[i+1]) changing++;
    }

    if(F==1) cout << "0" << endl;
    else if(F==changing+1) cout << "0" << endl;
    else if(F==changing && A[0]==A[N-1]) cout << "1" << endl;
    else cout << "-1" << endl;

    return 0;
}
0