解法
一番身長が高いもの以外、ある数字を言う動物は1匹か2匹。0から最大値までそれ以外が出てきたらおかしく、また一度1になってから再び2になるのもおかしいのでそれも弾く。それ以外2匹のときはどっちかを選べるので×2,最後が1だったらさらに×2をすれば答えが求まる。
コード
#include"bits/stdc++.h" using namespace std; using ll = int64_t; class Zoo { public: long long theCount(vector<int> answers) { sort(answers.begin(), answers.end()); vector<ll> num(answers.back() + 1, 0); for (int a : answers) { num[a]++; } ll ans = 1; for (int i = 0; i <= answers.back(); i++) { if (num[i] > 2 || num[i] <= 0) { //数がおかしい return 0; } if (i > 0 && num[i] > num[i - 1]) { //増えるわけはない return 0; } ans *= num[i]; } if (num[answers.back()] == 1) { ans *= 2; } return ans; } };