G - 为了lh学长冲鸭

题目:

协会正在举行一场对外的加时赛,在这场比赛中有n个小队,依次从1到n进行编号。

每一轮比赛后剩下小队的ID会重新按照顺序依次编号,然后按以下顺序进行比赛:第一队和第二队比,第三队和第四队比,依此类推。

可以保证在每一轮比赛中都有偶数个队。
每场比赛的获胜者晋级下一轮,失败者被淘汰出局,没有平局。

在最后一轮比赛中,只剩下两支小队,这一轮被称为决赛,获胜者被称作冠军。

大家都希望lh学长带领的小队和hz学长带领的小队进入决赛。
不幸的是,球队ID已经被确定了,lh学长和hz学长可能不会在决赛中相遇,因为如果他们足够强大,他们将在更早的阶段相遇。

请你预测一下,lh学长所在的ID为a和hz学长所在的ID为b的小队将会在哪一轮中碰面。

注意:lh学长的小队和hz学长的小队是所有小队中最强的存在!!!

Input

唯一的行包含三个整数n,a和b (2≤n≤256,1≤a,b≤n) 分别为参加比赛的小队总数,lh学长所带领的小队编号,hz学长所带领的小队编号。

可以保证,在每一轮比赛中,都有偶数个队晋级,并且a和b不相等。

Output

如果lh学长和hz学长可以在决赛中相遇,则输出唯一一行“Final!”(没有引号)

否则输出lh学长和hz学长相遇的轮数。

轮数是从1开始累计的。

Examples

Input

4 1 2

Output

1

Input

8 2 6

Output

Final!

Input

8 7 5

Output

2

Note

在第一个例子中,lh学长所在的1队和hz学长所在的2队在第1轮相遇。

在第二个例子中,lh学长所在的2队和hz学长所在的6队只可能在第3轮决赛时相遇(他们战胜了之前的所有对手)。

在第三个例子中,lh学长所在的7队和hz学长所在的5队可以在第2轮相遇(他们都在第1轮中赢得了对手)。

题解:

用一个sort将循环一次的且没有为零的数放在后面

k设定为每次sort以后的中值

如果k=n-1

可以知道两队在最后一轮相遇

代码:

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int n,a,b,i,s[257],nn=1,k;
    cin>>n>>a>>b;
    for(i=1;i<=n;i++)
    s[i]=i;
    k=1; 
    while(k)
    {    
        for(i=k;i<=n;i+=2) 
         {
             if((s[i]==a||s[i]==b)&&(s[i+1]==a||s[i+1]==b))
            {
                if(k==n-1)
                cout<<"Final!"<<endl;
                else
                cout<<nn<<endl;
                return 0;
            }
            else if(s[i]==a||s[i]==b)
            s[i+1]=0;
            else if(s[i+1]==a||s[i+1]==b)
            s[i]=0;
            else
            s[i]>s[i+1]?s[i+1]=0:s[i]=0; 
        }    nn++;
        sort(s+1,s+n+1);
        k=k+(n-k+1)/2;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值