문제출처 : https://www.acmicpc.net/problem/2865
이 문제 푸는데 생각보다 많은 시간이 걸렸다. 중간중간에 커피도 마시고 머리도짜르고 노래도 들으면서 띵가띵가풀긴했지만, 차근차근 잘풀어서 한번만에 통과했다.
핵심은 참가자명수, 참가자번호, 참가자의 능력, 장르를 이차원배열에 잘~ 담아서 인덱스를 잘정리해야 한다.code
#include <stdio.h> void BubbleSort(double arr[], int num) { int i, j; double temp; for (i = num - 1; i > 0; i--) for (j = 0; j < i; j++) if (arr[j] <= arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } int main() { int i, j, N, M, K, temp, score = 0, people = 0; int participant[101][101] = { 0 }; double big=0, ablity[101][101], result = 0, organize[101][101] = { 0 }, list[100] = { 0 }; scanf("%d %d %d", &N, &M, &K); for (i = 0; i < M; i++) for (j = 0; j < N; j++) scanf("%d %lf", &participant[i][j], &ablity[i][j]); while (people < M+1) { score = 0; for (i = 0; i < M; i++) { for (j = 0; j < N; j++) { if (participant[i][j] == people+1) { organize[people][score] = ablity[i][j]; score++; } } } people++; } for (i = 0; i < N; i++) { big = 0; for (j = 0; j < M; j++) { if (organize[i][j] > big) big = organize[i][j]; } list[i] = big; } BubbleSort(list, N); for (i = 0; i < K; i++) result += list[i]; printf("%.1lf", result); return 0; }
나는 입력받은 정보를 참가자 번호기준으로 다른배열에 정리를 해서 그걸 내림차순으로 정렬시키고, 본선진출 명수K만큼 더해주었다.