//downk// 아래 기본 제공된 코드를 수정 또는 삭제하고 본인이 코드를 사용하셔도 됩니다.
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector <int> subjects;
int main(int argc, char** argv) {
/* 아래 freopen 함수는 input.txt 를 read only 형식으로 연 후,
앞으로 표준 입력(키보드) 대신 input.txt 파일로 부터 읽어오겠다는 의미의 코드입니다.
만약 본인의 PC 에서 테스트 할 때는, 입력값을 input.txt에 저장한 후 freopen 함수를 사용하면,
그 아래에서 scanf 함수 또는 cin을 사용하여 표준입력 대신 input.txt 파일로 부터 입력값을 읽어 올 수 있습니다.
또한, 본인 PC에서 freopen 함수를 사용하지 않고 표준입력을 사용하여 테스트하셔도 무방합니다.
단, Codeground 시스템에서 "제출하기" 할 때에는 반드시 freopen 함수를 지우거나 주석(//) 처리 하셔야 합니다. */
//freopen("input.txt", "r", stdin);
setbuf(stdout, NULL);
int TC;
int test_case;
scanf("%d", &TC); // cin 사용 가능
for (test_case = 1; test_case <= TC; test_case++) {
// 이 부분에서 알고리즘 프로그램을 작성하십시오.
int total_sub, choice_sub;
scanf("%d %d", &total_sub, &choice_sub);
for (int i = 0; i < total_sub; i++)
{
int temp_input;
scanf("%d", &temp_input);
subjects.push_back(temp_input);
}
sort(subjects.begin(), subjects.end());
long long result = 0;;
vector<int>::iterator itr;
int i;
for (i = subjects.size()-1;i>= subjects.size() - choice_sub;--i)
{
result += subjects[i] ;
}
// 이 부분에서 정답을 출력하십시오.
printf("Case #%d\n", test_case); // cout 사용 가능
printf("%lld\n", result);
subjects.clear();
}
return 0; // 정상종료 시 반드시 0을 리턴해야 합니다.
}
벡터 남발한것도 0.1 안넘는데
문제가 뭐예요?
존나 간단함요 전체 과목수와 선택과 목수가 입력되고 전체과목에 대한 점수가 입력되면 최대 점수가 나올수 있게 선택하라
과목번호가 정해진건 아니기 때문에 그냥 점수 입력받아서 정렬한다음에 큰거부터 더하면됨
점수가 0점~100점 범위인가요?
넴~
그렇다면 100개의 벡터 만드는게 가장 빠르죠. 정렬 필요 없구요.
생각해보면 char에다 넣어서 해도되겟네 100점이하면
101개구나.
아하 100점 단위별로 +시켜도 되겟네
점수가 입력될때 벡터의 태그로 넣었다가 100점부터 필요 갯수만큼 꺼내서 합산하면 끝.
벡터 만들어놓고 인풋이랑 일치값이면 +1해놓고 그냥 100점부터 +해도 되겟군
vector< string > scores[100]; 이런식. 점수가 추가될때 scores[ score ].push_back( 과목명 ); 이런식.
101 해야지 또 빠뜨림.
그런 뒤 for 문으로 100 에서 0 으로 가면서 필요한 선택과목수 만큼 vector 에서 뽑아서 출력. 끝.
과목명 이야기가 없구 단지 점수만 있다면, 그냥 int scores[101]; 해서 과목 수만 세어도 되구요.
과목명도 없음 그냥 점수만 주어짐 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ