티스토리 뷰

Algorithm/Codeforces

B. World Cup

henry1214 2018. 3. 10. 21:43

http://codeforces.com/contest/931/problem/B



2^k개의 팀이 각각 순서대로 1~2^k로 팀번호가 정해지고 토너먼트를 한다. 이 때 주어진 a,b팀이 몇번째 라운드에서 만나는지 구하는 문제이다. 결승전에서 만나면 "Final!"을 출력한다. 각 팀을 0부터 indexing해서 a,b를 2로 나누면 다음 라운드의 몇번째 팀인지 알 수 있다. 나눌 때마다 라운드가 증가되고 팀이 절반으로 줄어든다. 이 때 a와 b가 같아지는 시점이 두 팀이 만나는 라운드가 된다. 이 때 팀이 하나라면 결승전이다.



1
2
3
4
5
6
7
8
9
10
11
12
#include <cstdio>
 
int main()
{
    int n,a,b,r=0;
    scanf("%d %d %d",&n,&a,&b);
    a--,b--;
    while(a!=b) a/=2,b/=2,n/=2,r++;
    if(n==1printf("Final!");
    else printf("%d",r);
    return 0;
}
cs


'Algorithm > Codeforces' 카테고리의 다른 글

A. Friends Meeting  (0) 2018.03.10
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday