https://yukicoder.me/problems/no/1109
解説
https://yukicoder.me/submissions/510555
全てのDについて全探索しよう。
あるDの音階が含まれるかどうかを判定する。
setを使うのがオススメ。
setに配列Tを全部入れて、
Dの音階に含まれる音を消せるだけ消したときに、
setが空になれば、その音階だけで構成されてるので、答えとしてカウントする。
答えがただ1つならそれを答えて、そうでないなら-1を答える。
int N, T[12]; vector<int> ds = { 0, 2, 4, 5, 7, 9, 11 }; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; rep(i, 0, N) cin >> T[i]; vector<int> ans; rep(D, 0, 12) { set<int> rest; rep(i, 0, N) rest.insert(T[i]); fore(d, ds) rest.erase((D + d) % 12); if (rest.empty()) ans.push_back(D); } if (ans.size() == 1) cout << ans[0] << endl; else cout << -1 << endl; }