はまやんはまやんはまやん

hamayanhamayan's blog

Permutation Check [AtCoder Beginner Contest 205 B]

https://atcoder.jp/contests/abc205/tasks/abc205_b

解説

https://atcoder.jp/contests/abc205/submissions/23457038

問題を少し変えて考えてみる。
今回の判定問題は、与えられたAを並び替えて、1,2,3,...,Nになるかというのを考えても問題ない。
と考えると、Aをソートして、1,2,3,...,Nであるかを判定すればいい。
このような操作を逆に考えるテクは汎用的なので、ネタの1つとして持っておくといい。

int N, A[1010];
//---------------------------------------------------------------------------------------------------
#define yes "Yes"
#define no "No"
string solve() {
    sort(A, A + N);
    rep(i, 0, N) if (i + 1 != A[i]) return no;
    return yes;
}
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> N;
    rep(i, 0, N) cin >> A[i];
    cout << solve() << endl;
}