嘘を吐かれた上で嘘を吐いている人数を決めて確認していく。
17行目の条件を最後まで見落として悲しい思いをした。
class ChickenOracle {
public:
string theTruth(int n, int e, int l1, int l2)
{
const string E = "The egg";
const string C = "The chicken";
const string T = "The oracle is a lie";
const string A = "Ambiguous";
int c = n - e;
bool egg, chi;
egg = chi = false;
for (int l = 0; l <= min(l1, l2); ++l) {
int ll = l1 + l2 - 2 * l;
if (n - ll - l < 0) continue;
if (c == ll && e == n - ll) egg = egg || true;
if (e == ll && c == n - ll) chi = chi || true;
}
if (egg && chi) return A;
if (egg) return E;
if (chi) return C;
return T;
}
};
0 件のコメント :
コメントを投稿