C - スフィンクスのなぞなぞ / AtCoderBeginnerContest #006

abc006.contest.atcoder.jp

#include <iostream>
using namespace std;

void Solve(int n, int m)	{
	int i, j;
	bool flg=false;

	for (int i=0; i<=1; ++i)	{
		for (int j=0; j<=n; ++j)
			if (i+j<=n && 2*(n-i-j)+3*i+4*j==m)	{
				flg=true;
				cout << n-i-j << " " << i << " " << j << endl;
				break;
			}
		if (flg)	break;
	}
	if (!flg)	cout << -1 << " " << -1 << " " << -1 << endl;
}

int main(void)	{
	int n, m;

	cin >> n >> m;
	Solve(n,m);
	return 0;
}

老人の足は3本なので0人か1人かの2通りを考えれば良い。
次に赤ちゃんを中心に答えと一致する組み合わせ探索していく。
見つかれば各々の人数を出力、見つからなければ-1を出力。
~了~