#include <stdio.h>


void swap(int* a, int*b)

{

    int temp = *a;

    *a = *b;

    *b = temp;

}


void quicksort(int* array, int start, int end)

{

int pivot = array[start];

    int left = start + 1;

    int right = end;

    

    while(left<right)

    {

        while(array[left]>pivot){left++;}

        while(array[right]<pivot){right--;}

        

        swap(&array[left], &array[right]);

    }

    swap(&array[start], &array[right]);

         

    quicksort(array, start, pivot-1);

    quicksort(array, pivot+1, end);

    

}

    

int main(void) {

int T;

int test_case;

    int totalNum, num, i;

    int total = 0;

    int array[200000];

    /* 아래 freopen 함수는 input.txt 를 read only 형식으로 연 후,

  앞으로 표준 입력(키보드) 대신 input.txt 파일로 부터 읽어오겠다는 의미의 코드입니다.

  만약 본인의 PC 에서 테스트 할 때는, 입력값을 input.txt에 저장한 후 freopen 함수를 사용하면,

  그 아래에서 scanf 함수를 사용하여 표준 입력 대신 input.txt 파일로 부터 입력값을 읽어 올 수 있습니다.

  따라서 본인의 PC 에서 테스트 할 때에는 아래 주석을 지우고 이 함수를 사용하셔도 됩니다.

  단, 이 시스템에서 "제출하기" 할 때에는 반드시 freopen 함수를 지우거나 주석 처리 하셔야 합니다. */

// freopen("input.txt", "r", stdin);


/* setbuf 함수를 사용하지 않으면, 본인의 프로그램이 제한 시간 초과로 강제 종료 되었을 때,

  printf로 출력한 내용이 실제 표준 출력에 기록되지 않고 채점이 되지 않을 수 있습니다.

  따라서 안전을 위해 반드시 setbuf(stdout, NULL) 함수를 사용하시기 바랍니다. */

setbuf(stdout, NULL);


scanf("%d", &T);

for(test_case = 1; test_case <= T; test_case++) {

// 이 부분에서 알고리즘 프로그램을 작성하십시오.

        

        scanf("%d %d", &totalNum, &num);

        

        for(i=0; i<totalNum; i++)

        {

        scanf("%d", &array[i]);

        }

        

        quicksort(array, 0, totalNum);

        

        for(i=0; i<num; i++)

        {

        total = total + array[i];

        }

        

        


// 이 부분에서 정답을 출력하십시오.

printf("Case #%d\n", test_case);

        printf("%d", total);

        

}


return 0; // 정상종료 시 반드시 0을 리턴해야 합니다.

}


퀵정렬해갖고 그중 k개 최고값 뽑아낸건데 왜 자꾸 시간초과되지...


멍청이새끼라고 욕해도 됨 이거보다 더 효율적?이게 어떻게 하지 난 프로그래밍 병신이야 ㅠㅠ