기본적인 정렬 문제이다. 처음 입력받을 때 전체 요소개수가 아닌 팀 개수를 입력하는걸 주의하고, 계산할때도 정렬된 결과의 처음과 끝을 계산하는 방식으로 순회를 반으로 줄인다.
처음과 끝 계산이니 벡터로 반복횟수를 반으로 제한하는 방법대신 정렬결과를 deque로 저장해서 deque가 빌때까지 반복하는 것도 될거 같다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void input_skill(vector<int>& skill)
{
int N, i, temp;
cin >> N;
for (i = 0; i < N * 2; i++)
{
cin >> temp;
skill.push_back(temp);
}
sort(skill.begin(), skill.end());
/*for (int i : skill)
{
cout << i << " ";
}
cout << "\n";*/
return;
}
void find_answer(vector<int>& skill)
{
int i;
int min = 0;
int temp;
for (i = 0; i < skill.size() / 2; i++)
{
temp = skill[i] + skill[skill.size() - i - 1];
if (min == 0 || min > temp)
{
min = temp;
}
else
{
;
}
}
cout << min << "\n";
return;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
vector<int> skill;
input_skill(skill);
find_answer(skill);
return 0;
}