알고리즘/SWEA
[SWEA] 8673. 코딩 토너먼트1
hyerann
2020. 3. 17. 16:41
모든 사람들의 코딩 실력을 입력받고 대진표에 따라
- 경기를 치르는 두 코딩 실력 중 더 높은 숫자(다음 라운드에 출전할)만 vnext 벡터에 넣었습니다.
- 경기를 치르는 두 코딩 실력의 차를 result에 더했습니다.
vnext의 사이즈가 1이 되면 최종 승자가 결정되었으므로 토너먼트가 종료되고, result를 반환하여 출력합니다.
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
vector<int> vnow, vnext;
int getResult() {
int result = 0;
while(1) {
vnow = vnext;
vnext.clear();
for(int i=0; i<vnow.size(); i+=2) {
vnow[i]>=vnow[i+1]? vnext.emplace_back(vnow[i]):vnext.emplace_back(vnow[i+1]);
result += abs(vnow[i]-vnow[i+1]);
}
if(vnext.size() == 1) {
return result;
}
}
}
int main() {
int T; cin >> T;
for(int tc=1; tc<=T; tc++) {
vnow.clear();
vnext.clear();
int K; cin >> K;
for(int i=0; i<pow(2, K); i++) {
int input; cin >> input;
vnext.emplace_back(input);
}
cout << '#' << tc << ' ' << getResult() << '\n';
}
return 0;
}