莫契王国的莫奇王子爱上了托福王国的托福公主,但托福王国的女王不同意这一婚姻。
女王挑战了他们的爱,并倡导给莫奇王子一项任务。解决这个问题是他们获得幸福的前提。由于缺乏能力,莫奇王子不得不向你求助。
任务是:托福公主、托福国王、王后、大臣、女仆、厨师和许多其他人在一起完成这项任务,所有的人都住在单独的房间里。请注意,这里没有空房间。他们每个人都知道自己在哪里,也知道其他人在哪里。
莫奇王子被要求找到公主。他可以询问任何人以下三种类型的问题:
- 你是谁?
- 谁住在指定的房间里?
- 托福公主住在哪个房间?
他们绝不会拒绝回答这些问题,但可能不会说出真相。包括托福公主本人在内的支持这一婚姻的人将陈述事实。反对派,就像女王一样,总是给出错误的答案。其他与会者将是武断的。
莫奇王子不想花太多时间,所以他会尽可能少地提出质疑。你能告诉他,在任何情况下,他确实需要多少个问题才能确定他的爱人在哪里?但有时,任务是不可能的,那么你也应该提醒他开始一段新的恋情。
输入
输入中的唯一一行包含三个整数。A~(1le a\le 2乘以10^5)a (1≤a≤2×105), bb和C~(0\le b,c\le 2乘以10^5)c (0≤b,c≤2×105)它们分别代表支持这一婚姻、反对这一婚姻和不真正关心这一婚姻的参与者的数量。
输出量
如果无法确定莫奇王子在哪里,输出NO
...否则,输出YES
首先,在表示问题的最小数量的整数之后,王子需要在第二行中查询。
样例输入1复制
2 0 0
样例输出1复制
YES
1
样例输入2复制
1 1 0
样例输出2复制
NO
样例解释2
在第二个例子中,Mochi王子可以向两位参与者提出所有可用的问题。然而,如果他们总是提供相同的答案,王子无法确保公主在哪里。所以答案是NO
.
【思路】
正确的要比错误的数目多一,才能找到公主;
另外,需要加几个特判。
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int a,b,c;
while(cin>>a>>b>>c)
{
int sum=0;
if(a<=b+c)
{
cout<<"NO"<<endl;
break;
}
if(a==1&&b==0&&c==0)
{
cout<<"YES"<<endl;
cout<<"0"<<endl;
break;
}
sum=(b+c)*2+1;
cout<<"YES"<<endl;
cout<<sum<<endl;
}
}