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; }