모든 사람들의 코딩 실력을 입력받고 대진표에 따라
- 경기를 치르는 두 코딩 실력 중 더 높은 숫자(다음 라운드에 출전할)만 vnext 벡터에 넣었습니다.
- 경기를 치르는 두 코딩 실력의 차를 result에 더했습니다.
vnext의 사이즈가 1이 되면 최종 승자가 결정되었으므로 토너먼트가 종료되고, result를 반환하여 출력합니다.
#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;
}
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA] 7087. 문제 제목 붙이기 (0) | 2020.03.19 |
---|---|
[SWEA] 1220. [S/W 문제해결 기본] 5일차 - Magnetic (0) | 2020.02.24 |
[SWEA] 9317. 석찬이의 받아쓰기 (0) | 2020.02.20 |
[SWEA] 8457. 알 덴테 스파게티 (0) | 2020.02.17 |
[SWEA] 8888. 시험 (0) | 2020.02.16 |
댓글