Programming/Baekjoon

백준 2822 점수계산 [c++]

fishersheep 2022. 1. 16. 18:55
반응형
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

bool compare(const pair<int, int>& a, const pair<int, int>& b)	//sort함수를 사용하여 정렬할때 second를 기준으로 정렬하기 위한 함수
{
	return a.second < b.second;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	vector<pair<int,int>>v(8);	//벡터를 선언
	int sum = 0;	//합계로 사용할 변수

	for (int i = 0; i < 8; i++)	//8개의 점수를 입력받는다.
	{
		cin >> v[i].first; //점수는 pair의 first에 저장
		v[i].second = i;	// 입력순서를 알기위해 인덱스를 second에 저장
	}

	sort(v.begin(), v.end());	//점수를 오름차순으로 정렬

	for (int i = 3; i < 8; i++)	//8개의 점수중 높은 5개의 점수만 필요함으로 정렬된 벡터에서 3번째 점수부터 더한다.
		sum += v[i].first;

	sort(v.begin() + 3, v.end(),compare);	//문제 번호도 오름차순으로 정렬

	cout << sum << '\n';	//합계 출력

	for (int i = 3; i < 8; i++)	//문제 번호 출력
		cout << v[i].second+1 << " ";

	return 0;
}
반응형

'Programming > Baekjoon' 카테고리의 다른 글

백준 1427 소트인사이드 [c++]  (0) 2022.01.17
백준 1037 약수 [c++]  (0) 2022.01.17
백준 1292 쉽게 푸는 문제 [c++]  (0) 2022.01.16
백준 1546 평균 [c++]  (0) 2022.01.16
백준 2581 소수 [c++]  (0) 2022.01.16