티스토리 뷰
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==1) printf("Final!"); else printf("%d",r); return 0; } | cs |
'Algorithm > Codeforces' 카테고리의 다른 글
A. Friends Meeting (0) | 2018.03.10 |
---|