https://csacademy.com/contest/round-73/task/three-equal/
N要素の0~2の配列Aがある。
これに「A[i] = ((A[i] + 1) % 3)」という操作を行い、全ての要素を等しくしたい。
最低何回必要か。
解法
全ての要素をどの数に揃えるかを全探索する。
どの数に揃えるかを決めたら、操作をシミュレートして必要回数を求める。
その最小値が答え。
int N, A[1010]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; rep(i, 0, N) cin >> A[i]; int ans = inf; rep(c, 0, 3) { int cnt = 0; rep(i, 0, N) { int x = A[i]; while (x != c) { x = (x + 1) % 3; cnt++; } } chmin(ans, cnt); } cout << ans << endl; }