PS/Educational Codeforces
Educational Codeforces Round 008. A
ekwoo
2021. 7. 6. 16:34
반응형
A. Tennis Tournament
문제
https://codeforces.com/contest/628/problem/A
Problem - A - Codeforces
codeforces.com
문제요약
토너먼트식 경기를 한다. 사람 수가 n일 때 k=2^i<=n을 만족하는 가장 큰 k에 대해 n-k명의 사람을 제외하고 k명에 대해 k/2의 경기를 하여 k/2사람 및 제외된 n-k명의 사람을 다음 라운드로 진출시키는 것을 반복하여 결승까지 진행한다.
풀이
반복문을 통해 위 계산을 n이 2가 될 때 까지 해준다.
각 반복에서 경기 수를 확인하여 경기수 X (1 + 2b) 개의 물병을 누적한다.
타올의 경우 전체 참가자수 X p개이다.
소스코드
#include <stdio.h>
typedef long long ll;
int main(){
int n, b, p, k, B=0;
scanf("%d%d%d",&n,&b,&p);
p*=n;
b=b*2+1;
for(;n>1;n-=k>>1){
for(k=2; k<<1<=n; k<<=1);
B+=b*(k>>1);
}
printf("%d %d",B,p);
}
반응형