728x90
가장 큰 수 5개의 합과 인덱스를 오름차순으로 출력하는 문제입니다.
vector<pair<int, int> > 형태로 값과 인덱스를 입력합니다.
먼저 값을 내림차순으로 정렬해서 5개의 값을 합한 후 출력해줍니다.
값을 합하면서 vector<int> index 벡터에 인덱스를 넣습니다.
그러면 큰 5개의 값의 인덱스가 벡터에 들어가게 됩니다.
이를 오름차순으로 정렬해준 뒤 출력해주었습니다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main(int argc, char *argv[])
{
int num;
int sum = 0;
vector<pair<int, int> > v;
vector<int> index;
for (int i = 1; i <= 8; ++i) {
cin >> num;
v.push_back(make_pair(num, i));
}
sort(v.begin(), v.end(), greater<pair<int, int> >());
for (int i = 0; i < 5; ++i) {
sum += v[i].first;
index.push_back(v[i].second);
}
cout << sum << endl;
sort(index.begin(), index.end());
for (int i = 0; i < 5; ++i) {
cout << index[i] << " ";
}
cout << endl;
return 0;
}
'알고리즘' 카테고리의 다른 글
[C++] 백준 3040번 백설 공주와 일곱 난쟁이 (0) | 2019.09.24 |
---|---|
[C++] 백준 2789번 유학 금지 (0) | 2019.09.24 |
[C++] 백준 4641번 Doubles (0) | 2019.09.23 |
[C++] 백준 6321번 IBM 빼기 1 (0) | 2019.09.23 |
[C++] 백준 6378번 디지털 루트 (0) | 2019.09.23 |