모래뱀상어

시간 제한2초메모리 제한512 MB

요약
각 배아가 자기보다 순위가 낮은 가장 큰 살아있는 배아를 먹는 일일 포식 과정을 시뮬레이션하고, m번 배아가 식사를 선택해 최대한 오래 살아남을 수 있는 날을 구한다.
난이도

보통10점 중 7점

유형
시뮬레이션, 그리디, 정렬, 구현
정답자
아직 제출이 없습니다

문제

모래뱀상어는 한 배에 새끼 한 마리만 낳는다. 어미는 알을 자궁에 품고, 알은 자궁 안에서 부화하며, 가장 큰 배아가 형제를 하나씩 먹어 치워 결국 한 마리만 남는다. 생물학에서는 이를 자궁 내 동족 포식이라고 부른다. 가장 큰 배아에게는 좋은 전략이지만 나머지에게는 그렇지 않다. 이길 수 없는 배아는 최대한 오래 버티는 쪽을 노리고, 당신은 그런 배아 한 마리의 전략을 세운다.

배아는 nn마리이고 크기는 모두 다르다. 하루는 다음과 같이 진행된다.

하루가 시작될 때 살아 있는 배아를 크기가 큰 순서로 줄 세운다. 크기가 같으면 입력에서 먼저 나온 배아가 앞선다. 이 순위는 하루 동안 고정된다. 배아가 차례를 받는 순서도 이 순위와 같고, 하루가 진행되면서 크기가 바뀌어도 순위를 다시 계산하지 않는다.

차례가 왔을 때 아직 살아 있는 배아는 다른 배아 한 마리를 먹는다. 당신을 뺀 모든 배아는 자기보다 순위가 낮으면서 살아 있는 배아 중 가장 앞선 배아, 즉 자기보다 작은 배아 중 가장 큰 배아를 먹는다. 자기보다 순위가 낮은 배아가 하나도 살아 있지 않으면 아무것도 먹지 않는다. 당신은 자기 차례에 순위가 낮고 살아 있는 배아 중 아무나 한 마리를 먹을 수 있고, 아무것도 먹지 않을 수도 있다. 자기보다 순위가 높은 배아는 절대 먹을 수 없다. 어떤 배아가 다른 배아를 먹으면 먹은 쪽의 크기는 두 크기의 합이 되고 먹힌 쪽은 사라진다. 죽은 배아는 차례가 와도 아무것도 하지 않는다.

당신이 처음에 다섯 번째로 큰 배아라고 하자. 가장 큰 배아가 두 번째로 큰 배아를 먹어 크기가 둘의 합이 된다. 두 번째 배아는 죽었으므로 차례를 그냥 넘기고, 세 번째 배아가 네 번째 배아를 먹는다. 그다음이 당신 차례다. 모든 배아가 차례를 한 번씩 지나면 하루가 끝나고, 다음 날은 살아남은 배아의 크기로 순위를 새로 정해 다시 시작한다.

가장 큰 배아는 계속 가장 큰 배아로 남으므로 당신은 어떻게 하든 언젠가 먹힌다. 날짜는 1일부터 센다. 최대한 오래 버티도록 먹을 상대를 골랐을 때 당신이 먹히는 날을 구하라.

입력

첫 줄에 데이터 집합의 개수 KK가 주어진다 (1≤K≤1001 \le K \le 100). 각 데이터 집합은 두 줄이다. 첫 줄에 정수 nn과 mm이 주어진다 (2≤n≤502 \le n \le 50, 2≤m≤n2 \le m \le n). nn은 배아의 수이고, mm은 전략을 세우는 대상이 몇 번째 배아인지를 나타낸다. 둘째 줄에 정수 nn개 s1,s2,…,sns_1, s_2, \dots, s_n이 주어지고 106>s1>s2>⋯>sn≥010^6 > s_1 > s_2 > \dots > s_n \ge 0을 만족한다. sis_i는 ii번째 배아의 크기다. 당신은 크기가 sms_m인 배아다.

출력

각 데이터 집합마다 Data Set x:를 한 줄에 출력한다. xx는 1부터 시작하는 데이터 집합 번호다. 다음 줄에 최적 전략을 따를 때 mm번째 배아가 먹히는 날을 출력한다. 각 데이터 집합 뒤에 빈 줄을 하나 출력한다.

예제3

  1. 예제 1

    입력
    1
    10 3
    100 98 78 50 49 48 47 18 14 12
    
    예상 출력
    Data Set 1:
    4
    
  2. 예제 2

    입력
    4
    2 2
    7 3
    3 3
    10 4 1
    4 4
    9 7 5 2
    2 2
    999999 0
    
    예상 출력
    Data Set 1:
    1
    
    Data Set 2:
    2
    
    Data Set 3:
    1
    
    Data Set 4:
    1
    
    
  3. 예제 3

    입력
    2
    9 3
    828030 827069 762250 733878 692300 642876 420172 333135 256954
    9 5
    905800 669481 661981 564326 559944 555345 228950 226672 214188
    
    예상 출력
    Data Set 1:
    4
    
    Data Set 2:
    4