본문 바로가기

Problem Solving/백준

[백준/C++] 2822번 점수 계산


#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <functional>
#include <string>
#include <math.h>
using namespace std;

bool compare(const pair<int, int> &a, const pair<int, int> &b) {
    return a.first > b.first;
}

int main() {
    vector< pair<int,int> > arr;
    pair<int,int> temp = make_pair(0,0);
    int answer = 0;
    vector<int> num;

    for(int i = 1; i < 9; i++) {
        cin >> temp.first;
        temp.second = i;
        arr.push_back(temp);
    }
    sort(arr.begin(), arr.end(), compare);
    for(int i = 0; i < 5; i++) {
        answer+= arr[i].first;
        num.push_back(arr[i].second);
    }
    sort(num.begin(), num.end());
    cout << answer << endl;
    for(int it : num)
        cout << it << " ";
}

값을 pair로 받아와서 각 점수마다 인덱스 번호를 지정해준 후 높은 점수 순으로 sorting 한 후 상위 5개 따로 추려서 값을 더하고 인덱스 값을 순서대로 나열해주었습니다.


문제: https://www.acmicpc.net/problem/2822

 

2822번: 점수 계산

8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문

www.acmicpc.net