const stdin = process.platform === 'linux'
? require('fs').readFileSync('/dev/stdin')
: `3
1 0
5
4 2
1 2 3 4
6 0
1 1 9 1 1 1`;
const input = stdin.toString().trim().split("\n");
const N = Number(input[0])
let arr = [];
for(let i=1; i<N * 2; i+=2) {
input[i] = input[i].split(' ');
let n = +input[i][0];
let m = +input[i][1];
let best = input[i+1].split(' ').map(Number);
let queue = best.map((v, i) => [i, v]) // i는 idx번호
best.sort((a,b) => b-a); // 정렬 후 값
let cnt = 0;
while(queue.length > 0) {
let idx = queue[0][0];
let val = queue[0][1];
queue.shift();
if(val < best[cnt]) {
queue.push([idx, val])
} else {
cnt++;
if(idx === m) break;
}
}
arr.push(cnt);
}
console.log(arr.join('\n'));
최선의 배열을 idx와 함께 만들어놓고, 기존 배열되지 않은 값과 배열이 된 값을 비교하여 최선의 값이 더 크면 idx,value를 shift한 것을 뒤에 push해주고 그게 아니라면(val 값과 최선의 값의 값이 같다면) cnt++를 해준다. 최선의 배열의 idx값을 의미한다. 여기서 최선의 값의 idx와 구하고자 하는 값의 idx가 같으면 cnt를 출력하여 위치를 알아낸다.